我有一个带有布尔字段和外键的模型
class ModelA(models.Model):
is_anonymous = BooleanField(default=False)
page = ForeignKey(ModelB, null=True)
我想在选择字段中组合这两个字段。
它应该有一个选项<option value="anonymous">Anonymous</option>
和ModelB
中每个对象的选项。
因此,如果在<select>
中选择了某个网页,则该字段is_anonymous
应为false,如果选择匿名,则字段page
应为空,is_anonymous
应为true
我想我必须将查询集ModelB.objects.all()
添加到
self.fields['field_name'].widget = forms.Select(choices=[(False, "Not anonymous"), (True, "Anonymous"),])
但它会将结果保存到错误的字段field_name
。
答案 0 :(得分:0)
此处无需合并字段。您可以将外键字段的empty_value设置为'anonymous',并在clean方法中处理它。
class ModelAForm(forms.ModelForm):
page = forms.ModelChoiceField(queryset=ModelB.objects.all(), empty_value="Anonymous")
class Meta:
model = ModelB
def clean(self):
if not self.cleaned_data['page']:
self.cleaned_data['anonymous'] = True