2014-11-16 142 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

相關問題