django ModelForm для подклассовых моделей: ошибка для одной, но не для другой (у объекта 'NoneType' нет атрибута 'label') - PullRequest
1 голос
/ 14 августа 2010

Я хотел бы попросить у вас руководства по следующему вопросу в 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)

и соответствующие им самые основные модели моделей:

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'

на сервер Джанго.При попытке в консоли я не получаю никаких ошибок.Редактировать: Кроме того, modelform_factory (Вопрос) работает.

Есть идеи, почему это так?Почему похожие модели ведут себя так по-разному, и как я могу избавиться от ошибки?

Редактировать: Это полная трассировка:

Файл "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/handlers/base.py "в get_response 100. response = callback (запрос, * callback_args, ** callback_kwargs) файл" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/contrib/auth/decorators.py "в _wrapped_view 25. вернуть файл view_func (request, * args, ** kwargs)" / Library / WebServer / Documents /dj1 /../ dj1 / esm / views.py "в инструментальной панели 193. напечатать файл qForm" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/encoding.py "in str 27. вернуть себя. unicode (). кодировать ('utf-8') файл" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6 / site-packages / django / forms / forms.py "в unicode 95. вернуть файл self.as_table ()" /Library/Frameworks/Python.framework/Versions / 2.6 / lib / python2.6 / site-packages / django / forms / forms.py "в as_table 217. errors_on_separate_row = False) Файл" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/forms.py "в _html_output 145. Файл bf = BoundField (self, field, name)" /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages / django / forms / forms.py "в init 398. если self.field.label имеет значение None:

Тип исключения: AttributeError в / esm / dashboard / Exception Значение: 'NoneType'У объекта нет атрибута' метка '

1 Ответ

1 голос
/ 25 октября 2012

Было ли у вас что-то вроде fields = ("name") в мета-форме вашей модели?Вышеупомянутое утверждение обрабатывается как выражение, а не как кортеж.Таким образом, код ищет для проверки поля 'n', 'a', 'm', 'e' в приведенном выше примере, а не «name».

Пожалуйста, используйте запятую, чтобы заставить Pythonинтерпретируйте вышеуказанное поле Meta как кортеж fields = ("name",) ... после этого изменения ваш код должен работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...