Python / Django模型覆盖已清理的数据

时间:2009-11-10 15:25:56

标签: python django model-view-controller django-models django-forms

您好我正在开发一个django项目,在我的一个模型中我有文件上传和图像上传,这两个字段的参数都设置为空白=真,但是有一个规定与此和如果两个中的一个不是,则该字段只能为空白,例如,如果图像字段已完成,则用户不必上传文件,如果文件字段已完成,则用户无需上传图像。

我的问题是我正在努力找出逻辑,这是在管理部分,所以我明白我将覆盖干净的数据。有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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