这是我的两个模型:
在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 shell来测试我的模型,我尝试以这种方式访问一个人的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_no从person访问personExt数据。
答案 0 :(得分:5)
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。