保存模型表單時出現了一個奇怪的問題。我有一個表單,它由兩個模型表單組成,我試圖同時保存它們。爲了清楚起見,下面是我的代碼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)的數據,它基本上是一個用戶對象。不幸的是,用戶對象沒有得到驗證(即使用戶在數據庫中並顯示在獲取請求的下拉菜單中)。謝謝。 –