Почему я не могу сослаться на название моей модели в этом представлении (Django)?
Я хочу выполнить простые операции над объектами, которые называются "моменты":
class Moment(models.Model):
name = models.CharField(max_length=200)
parent = models.ForeignKey("Moment")
def __unicode__(self):
return self.name
Когда я ссылаюсь на примеры моментов в моих взглядах:
def index(request):
moments = Moment.objects.all()
moment_names = [a.name for a in moments]
Я получаю следующую ошибку:
OperationalError at /moments/
no such column: moments_app_moment.name
Request Method: GET
Request URL: http://127.0.0.1:8000/moments/
Django Version: 1.6.1
Exception Type: OperationalError
Exception Value:
no such column: moments_app_moment.name
Почему я не могу назвать имя? У меня есть "имя", определенное в модели момента. Я уверен, что есть кое-что основное, что я пропускаю.
1 ответ
Решение
Это прекрасно работает для меня.
In [1]: from foo.models import Moment
In [2]: Moment.objects.create(name='the name')
Out[2]: <Moment: the name>
In [3]: Moment.objects.create(name='another name')
Out[3]: <Moment: another name>
In [4]: Moment.objects.create(name='child', parent=_)
Out[4]: <Moment: child>
In [5]: [m.name for m in Moment.objects.all()]
Out[5]: [u'the name', u'another name', u'child']
Стоит отметить, что я должен был изменить parent
поле не является нулевым (курица или яйцо). Ты нуждаешься в этом:
parent = models.ForeignKey('self', null=True)
Затем удалите файл базы данных локально и syncdb
снова.