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()
我需要通过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()