ModelChoiceField - get request.user.username



我需要根据request.User.username选择User来形成表单并保存到数据库中。这里我有一个表单的代码。py

class Send(forms.ModelForm):
sender = forms.ModelChoiceField(queryset=User.objects.order_by('username')

这是模型.py,我将在其中保存关于用户的数据:

class SendM(models.Model):
sender = models.ForeignKey(User, null=True, blank=False, on_delete=models.CASCADE)

这里是views.py,我在这里获得数据

def form_create(request):
if not request.user.is_anonymous:
form = Send(request.POST or None, initial={'sender': request.user.username})
if request.method == "POST":
if form.is_valid():
send = SendM(sender=User.objects.get(username=form.cleaned_data['sender']))
send.save()
return redirect("/")

为了理解,我想用数据库中的用户预先填充数组。

非常感谢!!

它只是这样做:[1] :https://i.stack.imgur.com/XY2fl.png

表单中的初始值是用户引用,而不是用户名,因为您使用的是ModelChoiceField。我现在真的不记得是模型实例(initial={'sender': request.user})(还是模型主键(initial={'sender': request.user.pk}).

然后在form.is_valid()之后,就不需要再次从数据库中获取用户。你只需要在表单上调用save方法。剩下的由Django完成。


if form.is_valid():
send = form.save()

最新更新