首页 文章

帮助管理员表单验证错误

提问于
浏览
0

我是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 回答

  • 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) .

相关问题