我是Django的新手,我在验证方面遇到的问题很少 管理模块中的表单,更具体地说是在表单中引发异常 的ModelForm。我可以用干净的方法验证和操作数据但是 似乎无法提出任何错误。每当我加入任何加注 声明我收到此错误“'NoneType'对象没有属性 'ValidationError'“。当我删除提升部分时,一切正常 精细。
然后,如果我使用不同的别名重新导入django.forms(在clean方法内)(例如从django导入表单作为blahbalh),那么我可以使用blahblah.ValidateException来引发消息。
有关正确做这件事的任何提示或建议吗?
以下是我在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)
- 谢谢, 甲
答案 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)。