我有一个应用程序,用户可以在其中提交提交到数据库的表单(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)。我希望能够自动将登录用户的用户名发送到同一数据库,因此我可以...
尝试像这样更新您的视图:
这里有两个问题: