6

これらは私の2つのモデルです:

models.py で

class Person(models.Model):

    person_no = models.IntegerField(max_length=10, primary_key='True')
    phone = models.IntegerField(max_length=20)

    class Meta:
        db_table = 'person'

class person_ext(models.Model):

    person_no = models.ForeignKey(Person)
    key = models.CharField(max_length=64)
    value = models.TextField()

    class Meta:
        db_table = 'personExt'

モデルをテストするためにmanage.pyシェルに行き、次のように人のIDを指定して人のcell_phoneにアクセスしようとしました:

        p = Person.objects.get(pk=1)
        cell_phone = Person_ext.objects.get(person_no=p).filter(key='cell').value

ただし、次のエラーが発生します。

DatabaseError: (1054, "Unknown column 'personExt.person_no_id' in 'field list'")

私のデータベース列は「person_id」ですが、django は「person_no_id」を探しています。person から person_no を使用して personExt データにアクセスするにはどうすればよいですか。

4

1 に答える 1

4

person_no_idは、Djangoに期待するものです。データベースが実際にはモデルが期待するものと同期していないようです。(sql)の出力を比較することを検討します

SHOW CREATE TABLE `personExt `;

python manage.py sql APPNAME

問題のテーブルの場合。この問題を修正するには、southなどの移行ツールを使用するか、データベースを再作成するか、データベースを手動で編集してフィールドを修正します。または、インポートする場合はモデルを変更できます。

person_no = models.ForeignKey(Person, db_column="person_id")

編集:primary_keyは文字列「True」ではなくTrueである必要があります。インデントはメタクラスに対して間違っているように見えるため、代わりにperson_extにPersonExtという名前を付けることを検討する必要があります。

于 2012-12-16T02:36:03.840 に答える