6

这是我的两个模型:

在模型.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 shell 来测试我的模型,并尝试以这种方式访问​​一个给定此人 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

对于有问题的表。您可以通过使用诸如南之类的迁移工具、重新创建数据库或手动编辑数据库来修复该字段来解决此问题。或者,如果您正在导入,您可以更改模型:

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

编辑:primary_key 应该是 True,而不是字符串“True”,Meta 类的缩进看起来是错误的,您应该考虑将 person_ext 命名为 PersonExt。

于 2012-12-16T02:36:03.840 回答