Django 1.1中的模型验证

时间:2011-05-08 12:31:26

标签: django django-models django-admin

我正在使用Django 1.1我想在模型上执行验证;具体来说,检查FileField中文件的扩展名。我可以很好地进行扩展检查,但如果扩展错误,我不知道如何在管理面板中显示错误;类似于你忘记填写必填字段时。

我尝试了两种方法。

  • 根据文件字段创建自定义字段,并对其clean()方法进行验证。然后我可以引发一个ValidationError。这适用于Django 1.2,但不适用于1.1。

  • 覆盖模型的save()方法。我不能在这里抛出ValidationError,因为它只是显示一般错误页面(常规用户不会看到)而在管理员中没有有用的消息。

有什么方法可以在Django 1.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

请注意,仅检查扩展程序并不足以确保您获得所需的文件类型。