2016-08-30 79 views
2

爲了支持舊(傳統)數據庫,我們必須創建一個使用整場外鍵用戶表的一個表格:這是我們的模型看起來怎麼樣:Django的使用整型字段作爲ForeignKey的領域

class UserHistory(): 
    user_id = models.IntegerField(null=True, blank=True) 
    # ..... (other fields) ..... 

問題是用戶標識可能存在或不存在於用戶表中。有沒有辦法將user_id字段視爲用戶talbe(存在時)的外鍵?所以我可以在django管理員或其他地方發揮作用,而不僅僅是ID。

+1

爲什麼不使用'models.ForeignKey'?這些表位於不同的數據庫嗎? – ozgur

+0

我們必須從遺留系統導入數據。如果我們在開始時將模型創建爲Foreignkey,那麼當該密鑰不存在時會引發外鍵約束。舊系統很醜陋:( –

+1

外鍵也可以爲零,你知道的。 – ozgur

回答

1

您可以使用db_constraint=FalseForeignKey字段。有關警告,請參閱docs,但傳統無效數據是合理的情況之一。

+0

當django admin(1.10)擊中不存在的行時,它將在外鍵上顯示破折號列 –

+0

噢,很好。我落後於時代。 –

0

將第二列添加到數據庫,並使用SQL將其他表中沒有對應對象的字段清空。然後在這個新領域定義你的django模型。