每次提交表单时如何将登录用户的用户名放在数据库中

问题描述 投票:0回答:2

我有一个应用程序,用户可以在其中提交提交到数据库的表单(POSTGRES)。

我希望能够自动将登录用户的用户名发送到同一数据库,因此我可以跟踪谁在提交。 (我不想用用户名填写表格行,我希望在后端处理该行。)>

我设法得到用户名,但它保持为空,而且我不知道如何在数据库中获取用户名并在每次提交时完成用户名。

我希望我清楚,

谢谢大家。

这是我的代码

models.py

from django.db import models as db_models
from django.contrib.auth.models import User
from django.contrib.gis.db import models


class Fertidb(models.Model):
    user = db_models.ManytoManyField(User, on_delete=models.CASCADE)
    area = models.IntegerField()
    plot = models.FileField(upload_to='KML_FILES', blank=True)

    def __str__(self):
        return f' Parcelles de {self.user.username}'

forms.py

from django import forms
from django.contrib.auth.models import User
from .models import Fertidb


class FertidbForm(forms.ModelForm):
    class Meta:
        model = Fertidb
        labels = {
            "plot": "Importez votre fichier KML"
        }
        fields = ['culture', 'area', 'plot']

views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import FertidbForm
from django.contrib.auth.models import User

title = 'FERTISAT'


@login_required
def fertisatmap(request):

    mapbox_access_token = 'pk.eyJ1IjoiaGFtemFiIiwiYSI6ImNrMHdwYmQ2bzA2OGYzbHB1Z292eGxneDgifQ.rGPQjaoWuOdnq_UdxAfQ_w'
    if request.method == "POST":
        o_form = FertidbForm(request.POST, request.FILES)
        if o_form.is_valid():
            o_form.save(commit=False)
            o_form.user = request.user.username()
            messages.success(request, f'Vos informations ont été envoyées')
            return redirect('fertisat-map')
    else:
        o_form = FertidbForm()
    context = {'title': title, 'o_form': o_form}
    return render(request, 'fertisat/fertisatmap.html ', context, {'mapbox_access_token': mapbox_access_token})

我有一个应用程序,用户可以在该应用程序中提交一个进入数据库的表单(POSTGRES)。我希望能够自动将登录用户的用户名发送到同一数据库,因此我可以...

python sql django postgresql
2个回答
1
投票

尝试像这样更新您的视图:


0
投票

这里有两个问题:

© www.soinside.com 2019 - 2024. All rights reserved.