1

您好我目前正在研究一個django項目,在我的一個模型中我有一個文件上傳和圖片上傳,這兩個字段的參數都設置爲空= True,然而,這有一個規定,只有在兩者中的一個不是的情況下,該字段纔可以是空白的,例如,如果該字段是完整的,則用戶不必上傳文件,並且如果文件字段是完整的那麼用戶不需要上傳圖像。Python/Django模型覆蓋已清理的數據

我的問題是我努力弄清楚邏輯,這是在管理部分,所以我明白我會覆蓋乾淨的數據。誰能幫忙?

+1

完成...怎麼樣? – 2009-11-10 15:36:13

+0

完成,即在POST中有一個條目 – Udders 2009-11-10 15:41:26

回答

4

您只需要在ModelForm上定義一個自定義的clean()方法,該方法檢查是否填充了一個或兩個字段。

def clean(self): 
    file_field = self.cleaned_data.get('file_field') 
    image_field = self.cleaned_data.get('image_field') 

    if file_field and image_field: 
     raise forms.ValidationError("You should only provide one of File or Image") 
    elif not file_field and not image_field: 
     raise forms.ValidationError("You must provide either File or Image") 

    return self.cleaned_data 
+0

謝謝,雖然我想我錯過了,一個文件和一個圖像可以一起上傳,我認爲這會改變一些什麼情況? – Udders 2009-11-10 15:48:04

+0

當然,那麼就放下第一個「if」。 – 2009-11-10 15:48:52