我是python和django的新手,现在我一直在用这种表单挣扎一段时间。我得到的是一个有三个领域的表格。我希望它有可能离开这些领域的每一个空白,并在视图中,我试图做一个if-elif-else语句取决于哪些字段留空。但它在这里出错了。Django表单:清除if语句中的数据
如果我离开field1空白a是一个空列表,如果我打印它,但在if语句中== == []似乎不计算。它直接跳转到随机函数发生错误的else部分,因为它不能在d上使用(这是一个空列表,因为它已经被a过滤了)。
如果我不在表单中留下任何字段,一切正常。
我的问题: 是不是可以做的如果清洁数据的声明或我只是做这一切都是错的?为什么不“如果一个== []”数?
以下是部分代码的外观。视图:
def SomeFunction(request):
if request.method == 'POST':
form = SomeForm(request.POST)
if form.is_valid():
a = form.cleaned_data['field1']
b = form.cleaned_data['field2']
c = form.cleaned_data['field3']
form = form.save()
if a == []:
d = Model2.objects.filter(Model2field2=b, Model2field3=c).distinct()
e = random.choice(d)
return render(request, 'SomePage.html', {
'e' : e
})
#Here I have some similar elif statements..
else:
d = Model2.objects.filter(Model2field1=a, Model2field2=b, Model2field3=c).distinct()
e = random.choice(d)
return render(request, 'SomePage.html', {
'e' : e
})
形式:
class SomeForm(forms.ModelForm):
class Meta:
model = Model1
fields = ['field1', 'field2', 'field3']
widgets = {
'field1' : forms.CheckboxSelectMultiple,
'field2' : forms.CheckboxSelectMultiple,
'field3' : forms.CheckboxSelectMultiple,
}
你抽象太多了这里。 field1是什么类型的字段? –
所有的字段都是ManyToManyFields。 – xdna