Модель Django Poll

Я работаю через учебные руководства Django, и теперь я при создании опроса.

Код ниже хорошо работает, пока я не хочу создать выбор, где по некоторым причинам я всегда получаю это сообщение об ошибке:

line 22, in __unicode__
return self.question

AttributeError: 'Choice' object has no attribute 'question'

Что я делаю неправильно?

Вот мой код:

import datetime
from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
        return self.question

    def was_published_today(self):
        return self.pub_date.date() == datetime.date.today()



class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

    def __unicode__(self):
        return self.question # this is line 22

8
задан MacPython 1 May 2012 в 09:12
поделиться

2 ответа

Метод __unicode__ в модели Choice должен выглядеть примерно так:

def __unicode__(self):
    return self.poll.question

Атрибут question не существует в модели Choice, его нужно искать через поле внешнего ключа poll.

Не забудьте ознакомиться с отличной документацией Django, в которой показано множество примеров того, как работать с отношениями "многие к одному".

Редактировать

Возможно, было бы более логично возвращать self.choice в Choice методе модели __unicode__, чтобы выводился фактический выбор, а не вопрос Poll.

def __unicode__(self):
    return self.choice
10
ответ дан 5 December 2019 в 07:34
поделиться

Должно быть:

def __unicode__(self):
    return self.poll.question

Потому что опрос - это связанная модель, которая содержит вопрос.

4
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: