我最近在我的Django模型中遇到了ForeignKey衝突。我需要有兩個外鍵(owner,assigned_to)最終指向相同的模型(用戶)。related_name參數在Django模型中沒有像預期的那樣工作?
從我的理解我需要一個related_name
論點來解決這個問題。所以我做了:
assigned_to = models.ForeignKey(TaskUser, blank=True, null=True, related_name='user_assignment')
和
owner = models.ForeignKey(TaskUser, related_name="user_ownership"
但我仍然得到一個錯誤:
tasks.task: Accessor for field 'owner' clashes with related field 'TaskUser.user
_ownership'. Add a related_name argument to the definition for 'owner'.
tasks.task: Reverse query name for field 'owner' clashes with related field 'TaskUser.user_ownership'. Add a related_name argument to the definition for 'owner'.
爲什麼我仍然收到此錯誤?
有一個catch,owner
是在超類(BaseWidget)和assigned_to
是在一個子類(任務)。在繼承關係中使用related_name
有問題嗎?我是否需要重寫所有者的繼承關係,並在子類中重新定義related_name
?我會很感激任何幫助!
是否有可能在另一個模型/應用程序中具有相同的字段/類似的相關名稱? – 2011-04-10 11:24:53
我有一個由許多模型繼承的BaseWidget(與所有者)。因此,幾乎所有的模型都會繼承BaseWidget,並因此繼承所有者。 assigned_to僅存在於任務 – 2011-04-10 11:33:37
BaseWidget可能是'abstract'模型嗎? – 2011-04-10 11:46:30