【问题标题】:Model validation in Django 1.1Django 1.1 中的模型验证
【发布时间】:2011-08-21 02:37:35
【问题描述】:

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

我尝试了两种方法。

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

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

有什么方法可以在 Django 1.1 中做我想做的事吗?

【问题讨论】:

  • 请尽可能升级:)

标签: django django-models django-admin


【解决方案1】:

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

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

【讨论】:

  • 我一定还是做错了什么。已经定义了一个'MyModel'Admin,所以我添加了额外的代码。然后我将我的 clean 方法放在 MyModelForm 类中。但是,我在管理面板中看不到模型;它只是以某种方式不可见。
猜你喜欢
  • 2019-12-24
  • 2017-08-16
  • 2016-01-18
  • 1970-01-01
  • 2021-08-05
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多