2014-11-16 115 views
0

我定义了两个模型在Django的模型文件:OneToOneField字段的字段名称是追加`_id`变量名后

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 insend personnel_id

回答

1

在引用模型字段的情况下,Django会为您添加_id

documentation of Database Representation of a model field

在幕后,Django的追加“_id”字段名来创建其数据库列名。 您可以通过指定db_column 来明确地更改它。但是,除非您编写自定义SQL,否则您的代码不应该处理数据库列 的名称。您将始终处理模型对象的名称 。

因此,只需将您的字段重命名为personnel_id将由django为您添加。

+0

这是否意味着我应该将该字段命名为'personnel'而不是'personnel_id'? – stamaimer

+0

是的..这会帮你照顾它。就在您输入评论时,我正在编辑答案:) – karthikr

相关问题