OneToOneField字段的字段名称在变量名后附加`_id`

时间:2014-11-16 03:37:59

标签: django

我在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}}。

1 个答案:

答案 0 :(得分:1)

Django会在参考模型字段的情况下为您附加_id

来自documentation of Database Representation of a model field

  

在幕后,Django追加" _id"到字段名称以创建其数据库列名称。   您可以通过指定db_column显式更改它   但是,您的代码永远不必处理数据库列   名称,除非您编写自定义SQL。你将永远处理这个领域   模型对象的名称。

因此,只需将您的字段重命名为personnel,然后由django为您添加_id