【问题标题】:django ModelForm for subclassed models : Error for one, but not for another ('NoneType' object has no attribute 'label')子类模型的django ModelForm:一个错误,但另一个错误('NoneType'对象没有属性'label')
【发布时间】:2011-03-29 19:23:16
【问题描述】:

我想在 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(Question) 有效。

任何想法为什么会这样?为什么相似模型的行为如此不同,我该如何摆脱错误?

编辑: 这是完整的追溯:

get_response 中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/handlers/base.py” 100. 响应 = 回调(请求,*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. return self.unicode().encode('utf-8') unicode 中的文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py” 95. 返回 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:

异常类型:AttributeError at /esm/dashboard/ 异常值:“NoneType”对象没有属性“标签”

【问题讨论】:

  • 对我来说效果很好。你的应用程序验证了吗?那 trough="Ordering" 定义明确吗?请发布完整的回溯!
  • 是的,请发布更多的回溯。
  • 是的,模型确实验证了,所有模型似乎都可以很好地协同工作。有趣的是通过modelform_factory创建表单不会产生任何错误。

标签: django django-forms


【解决方案1】:

您的 Modelform 的 Meta 中是否有类似 fields = ("name") 的内容? 上述语句被视为表达式而不是元组。因此,代码正在寻找验证上例中的字段 'n','a','m','e',而不是“name”。

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

【讨论】:

    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2021-02-17
    相关资源
    最近更新 更多