2015-12-01 48 views
0

我在Django中的db_column參數有問題。比方說,我在我的models.py創建的模型:模型 - 外鍵db_column命名問題

class Stats(models.Model): 
    fk = models.ForeignKey(Game, db_column='fk_gameId') 
    score = models.IntegerField(default=0) 

,並試圖使插入到從該模型生成的表中,插入操作的示例代碼是這樣的:

dbQuery = Stats(fk_gameId = requestedGameId, 
       score = gameInfo['score']) 

dbQuery.save() 

什麼情況是,在執行時系統引發以下錯誤:

TypeError: 'fk_gameId' is an invalid keyword argument for this function

但是,如果我改變插入語句的第一個參數如下圖所示:

dbQuery = Stats(fk_id = requestedGameId, 
       score = gameInfo['score']) 

dbQuery.save() 

那麼完美的作品雖然在DB列名稱爲「fk_gameId」我在模型中定義它。

這是正常的還是我錯過了一些東西。你能幫我理解這裏有什麼問題嗎?謝謝。

回答

0

db_column更改數據庫中列的名稱。它不會更改Django使用的模型屬性的名稱。

既然你已經定義的字段fk = models.ForeignKey(...),在Django的字段的名稱仍是fk,和原始ID字段命名爲fk_id

+0

那麼我不可能在Django中更改字段名稱?它會一直是myFieldNameForForeignKeyInModel + _id嗎? – Phyticist

+0

+ _id在'ForeignKey.get_attname()'中被硬編碼。 – knbk

+0

非常感謝你的信息。 – Phyticist