2014-02-04 6 views
0

Я хочу выполнять простые операции над объектами, называемые «моменты»:Почему я не могу ссылаться на имя моей модели в этом представлении (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 

Почему я не могу позвонить a.name? У меня есть «имя», определенное в модели моментов. Я уверен, что есть что-то основное, что я пропускаю.

+0

@tcarobruce Да, я запустил syncdb, и столбец показывает, когда я запускаю sql. Я в тупике. –

ответ

0

Это прекрасно работает для меня.

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.

+0

Это сработало, спасибо большое. –

+0

@DavidJ. без проблем – orokusaki

 Смежные вопросы

  • Нет связанных вопросов^_^