保存模型表单时出现了一个奇怪的问题。我有一个表单,它由两个模型表单组成,我试图同时保存它们。为了清楚起见,下面是我的代码ModelType中的ForeignKey上的Queryset过滤
Views.py
def create_user(request):
if request.method == 'POST':
user_form = UserForm(request.POST)
my_user_form = MyUsersForm(request.POST)
if user_form.is_valid() and my_user_form.is_valid():
us = user_form.save()
my_us = my_user_form.save(commit=False)
my_us.user = us
my_us.save()
return HttpResponse('You have successfully created a user')
else:
return HttpResponse(' My_user_form is not validated')
else:
user_form = UserForm()
my_user_form = MyUsersForm(user=request.user)
return render(request, 'create_user.html', {'user_form': user_form, 'my_user_form': my_user_form})
当我重写MyUsersForm的初始化方法来筛选外键的查询集(CREATED_BY)my_user_form没有得到证实,但在我不过滤查询集,my_user_form被验证,表单被保存。
我不明白的是,当我不过滤查询集怎么来my_user_form验证?
通过request.post发送到my_user_form的数据在某种程度上丢失了(当我过滤查询集时)。任何线索正确的方向是高度赞赏。感谢您提供宝贵意见。
Forms.py
class MyUsersForm(ModelForm):
class Meta:
model = MyUsers
fields = ['created_by', ]
def __init__(self, user=None, **kwargs):
super(MyUsersForm, self).__init__(**kwargs)
if user is not None:
self.fields['created_by'].queryset = User.objects.filter(username=user)
Models.py
class MyUsers(models.Model):
user = models.OneToOneField(User, blank=True, null=True)
created_by = models.ForeignKey(User, related_name="created_by", blank=True, null=True)
你是什么意思未经验证?你想要验证什么? – Sayse
我想验证发送到my_user_form = MyUsersForm(request.POST)的数据,它基本上是一个用户对象。不幸的是,用户对象没有得到验证(即使用户在数据库中并显示在获取请求的下拉菜单中)。谢谢。 –