Я работаю через учебные руководства 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
Метод __unicode__
в модели Choice
должен выглядеть примерно так:
def __unicode__(self):
return self.poll.question
Атрибут question
не существует в модели Choice
, его нужно искать через поле внешнего ключа poll
.
Не забудьте ознакомиться с отличной документацией Django, в которой показано множество примеров того, как работать с отношениями "многие к одному".
Редактировать
Возможно, было бы более логично возвращать self.choice
в Choice
методе модели __unicode__
, чтобы выводился фактический выбор, а не вопрос Poll.
def __unicode__(self):
return self.choice
Должно быть:
def __unicode__(self):
return self.poll.question
Потому что опрос - это связанная модель, которая содержит вопрос.