帮助管理员表单验证错误

时间:2009-09-16 11:59:08

标签: python django django-models django-admin

我是Django的新手,我在验证方面遇到的问题很少 管理模块中的表单,更具体地说是在表单中引发异常 的ModelForm。我可以用干净的方法验证和操作数据但是 似乎无法提出任何错误。每当我加入任何加注 声明我收到此错误“'NoneType'对象没有属性 'ValidationError'“。当我删除提升部分时,一切正常 精细。

然后,如果我使用不同的别名重新导入django.forms(在clean方法内)(例如从django导入表单作为blahbalh),那么我可以使用blahblah.ValidateException来引发消息。

有关正确做这件事的任何提示或建议吗?

以下是我在Admin.py中所做的一个例子:

admin.py

来自django导入表单 来自proj.models import * 来自django.contrib import admin

class FontAdminForm(forms.ModelForm):

class Meta:

    model = Font

def clean_name(self):

    return self.cleaned_data["name"].upper()

def clean_description(self):

    desc = self.cleaned_data['description']
    if desc and if len(desc) < 10:
        raise forms.ValidationError('Description is too short.')
    return desc

class FontAdmin(admin.ModelAdmin):

form = FontAdminForm
list_display = ['name', 'description']

admin.site.register(Font,FontAdmin)

- 谢谢, 甲

1 个答案:

答案 0 :(得分:3)

您的问题可能在* import。

from proj.models import * 

如果proj.models包含任何名为forms的变量(包括某些模块导入,如“来自django import forms”),它可能会导致您的初始导入失败:

from django import forms

我会明确地从proj.models导入,例如

from proj.models import Font

如果这不起作用,请查看是否有任何其他变量名称“表单”可能会影响您的范围。

您可以使用内省来查看“表单”是什么。在clean_description方法中:

print forms.__package__

我的猜测是它不会是“django”(或者会返回一个错误,表明它绝对不是django.forms)。