ModelChoiceField - 获取 request.user.username

ModelChoiceField - get request.user.username

我需要通过request.user.username选择用户来形成并保存到数据库中。 这里我有一个代码 forms.py

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

这里是models.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()之后就不需要再从数据库中获取用户了。您只需要在表单上调用保存方法。 Django 完成剩下的工作。


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