0

「瞬間」と呼ばれるオブジェクトに対して簡単な操作を実行したい:

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 を呼び出せないのはなぜですか? 私は瞬間モデルで定義された「名前」を持っています。私が見落としている基本的なものがあると確信しています。

4

1 に答える 1

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']

私が変更しなければならなかったことに注意すべきことの1つは、parentフィールドがnull(鶏または卵)ではないことです。あなたはこれを必要とします:

parent = models.ForeignKey('self', null=True)

次に、データベース ファイルをローカルでsyncdbもう一度削除します。

于 2014-02-04T18:11:22.193 に答える