Django:两个字段,一个有效

Dav*_*pez 0 django django-models

我在一个模型中有两个字段,我只想在管理表单中有一个有效字段.如果一个字段有效,则另一个字段无法插入数据,反之亦然.但是有必要将数据放在两个字段之一中进行保存.

那可能吗?

谢谢!

kar*_*ikr 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
Run Code Online (Sandbox Code Playgroud)

以下是使用django admin表单的文档

如果您希望验证发生在前端,而不是表单提交,您可能需要考虑使用javascript解决方案.这是一个javascript解决方案的答案