我需要根据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()