我在django的模型文件中定义了两个模型:
class Personnel(models.Model):
personnel_id = models.IntegerField(primary_key=True)
#...
class Settlement(models.Model):
personnel_id = models.OneToOneField(Personnel, primary_key=True)
#...
运行python manage.py makemigratios app_name
后,检查创建表sql:
CREATE TABLE settlement (`personnel_id_id` integer NOT NULL PRIMARY KEY, ...
为什么实际字段名称是personnel_id_id
personnel_id
的{{1}}。
答案 0 :(得分:1)
Django会在参考模型字段的情况下为您附加_id
。
来自documentation of Database Representation of a model field:
在幕后,Django追加" _id"到字段名称以创建其数据库列名称。 您可以通过指定db_column显式更改它 但是,您的代码永远不必处理数据库列 名称,除非您编写自定义SQL。你将永远处理这个领域 模型对象的名称。
因此,只需将您的字段重命名为personnel
,然后由django为您添加_id
。