Python/Django模型覆盖清理后的数据
你好,我现在正在做一个Django项目。在我的一个模型里,有一个文件上传和一个图片上传,这两个字段的参数都设置为可以留空(blank=True)。不过这里有个要求,就是这两个字段只能有一个可以留空。举个例子,如果用户上传了图片,那么就不需要再上传文件;反之,如果用户上传了文件,那么就不需要再上传图片。
我现在的问题是,我在理清这个逻辑上遇到了困难。这是在管理后台的部分,所以我知道我需要重写数据的清理过程。有没有人能帮我一下?
1 个回答
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