用于子类模型的django ModelForm:一个错误,但另一个错误('NoneType'对象没有属性'label')

时间:2010-08-14 09:39:35

标签: django django-forms

我想在django的以下事项中向您寻求指导:

我使用的是以下型号:

class QItem(models.Model):
    isWhat = models.CharField(max_length=100, blank=True,  choices=ISWHAT)
    slug = models.SlugField(blank=True)
    script = models.CharField(max_length=100)
    comment = models.TextField(blank=True, null=True)
    author = models.ForeignKey(User)

class QuestionSet(QItem):
    items = models.ManyToManyField(QItem, blank=True, through='Ordering',related_name="contained")


class Question(QItem):
    answerObject = models.OneToOneField("AnswerObject", blank=True, null=True)

及其各自最基本的ModelForms:

class QuestionForm(ModelForm):
    class Meta:
        model = Question

class QuestionSetForm(ModelForm):
    class Meta:
       model = QuestionSet  

在视图中,调用

           qset=QuestionFormSet()
           print q 

工作得很好。

然而,

           q = QuestionForm()
           print q

抛出

Exception Type: AttributeError
Exception Value:    'NoneType' object has no attribute 'label'

在Django的服务器中。在控制台中尝试时,我没有任何错误。 编辑:另外,modelform_factory(问题)有效。

为什么会出现这种情况?为什么类似的模型表现得如此不同,我怎么能摆脱错误?

编辑: 这是完整的追溯:

get_response中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/handlers/base.py”   100. response = callback(request,* callback_args,** callback_kwargs) _wrapped_view中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/contrib/auth/decorators.py”   25. return view_func(request,* args,** kwargs) 仪表板中的文件“/Library/WebServer/Documents/dj1/../dj1/esm/views.py”   193.打印qForm str 中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/encoding.py”   27.返回self。 unicode ()。encode('utf-8') 在 unicode 中输入文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py”   95. return self.as_table() 在as_table中输入文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py”   217. errors_on_separate_row = False) _html_output中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py”   145. bf = BoundField(自我,字段,名称) init 中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py”   398.如果self.field.label为None:

异常类型:/ esm / dashboard /中的AttributeError 异常值:'NoneType'对象没有属性'label'

1 个答案:

答案 0 :(得分:1)

你的模型形态的Meta中有fields = ("name")之类的东西吗? 上述语句被视为表达式而不是元组。所以代码在上面的例子中寻找验证字段'n','a','m','e',而不是“name”。

请使用尾随逗号强制python将上面的元字段解释为元组fields = ("name",) ...此代码在此更改后应该可以正常工作。