我是Django的新手,我在Admin模块中的验证表单几乎没有问题,更具体地说是在ModelForm中引发异常 . 我可以在干净的方法中验证和操作数据,但似乎无法引发任何错误 . 每当我包含任何raise语句时,我都会收到此错误“'NoneType'对象没有属性'ValidationError'” . 当我取下提升部件时,一切正常 .
然后,如果我使用不同的别名(例如从django导入表单作为blahbalh)重新导入django.forms(内部清理方法),那么我可以使用blahblah.ValidateException来引发消息 .
关于正确做这件事的任何提示或建议?
这是我在Admin.py中所做的一个例子:
admin.py
来自django的导入表单来自proj.models import * from 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 回答
你的问题可能在* import中 .
如果proj.models包含任何名为forms的变量(包括某些模块导入,如“来自django import forms”),它可能会导致您的初始导入失败:
我会明确地从proj.models导入,例如
如果这不起作用,请查看是否有任何其他变量名称“表单”可能会影响您的范围 .
您可以使用内省来查看“表单”是什么 . 在clean_description方法中:
我的猜测是它不会是“django”(或者会返回一个错误,表明它绝对不是django.forms) .