我在一个模型中有两个字段,我只想在管理表单中有一个有效字段。如果一个字段有效,则另一个字段无法插入数据,反之亦然。但是有必要将数据放在两个字段之一中进行保存。
那可能吗?
谢谢!
答案 0 :(得分:5)
如果您希望在后端进行此验证,则应在表单的clean
方法中进行验证。像这样的东西:
class MyAdminForm(forms.ModelForm):
def clean(self):
cd = self.cleaned_data
fields = [cd['field1'], cd['field2']]
if all(fields):
raise ValidationError('Please enter one or the other, not both')
if not any(fields): #Means both are left empty
raise ValidationError('Please enter either field1 or field2, but not both')
return cd
Here is the documentation on using forms with django admin
如果您希望验证在前端发生,而不是在表单提交上,您可能需要考虑使用javascript解决方案。 以下是javascript solution
的答案