我正在使用Django 1.1我想在模型上执行验证;具体来说,检查FileField中文件的扩展名。我可以很好地进行扩展检查,但如果扩展错误,我不知道如何在管理面板中显示错误;类似于你忘记填写必填字段时。
我尝试了两种方法。
根据文件字段创建自定义字段,并对其clean()方法进行验证。然后我可以引发一个ValidationError。这适用于Django 1.2,但不适用于1.1。
覆盖模型的save()方法。我不能在这里抛出ValidationError,因为它只是显示一般错误页面(常规用户不会看到)而在管理员中没有有用的消息。
有什么方法可以在Django 1.1中做我想做的事情吗?
答案 0 :(得分:3)
Django 1.1没有模型验证。唯一要进行验证的地方是在表单上 - 您只需要使用clean方法定义自定义模型,然后告诉管理员使用它。
class MyModelForm(forms.ModelForm):
def clean_myfilefield(self):
... do validation or raise forms.ValidationError('message')
class MyModelAdmin(admin.ModelAdmin):
model = MyModel
form = MyForm
请注意,仅检查扩展程序并不足以确保您获得所需的文件类型。