2016-02-26 38 views
0

我在一個模型中有兩個字段,我只想要一個有效的字段在管理員表單中。如果一個字段有效,那麼另一個字段不可能插入數據,反之亦然。但是有必要將數據放入兩個字段中的一個來保存。Django:兩個字段,一個有效

這可能嗎?

謝謝!

回答

4

如果您希望驗證發生在後端,您將在表格的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

相關問題