2009-06-24 86 views
3

我想在我的項目中使用不同的開源應用程序。問題是有兩個不同的應用程序使用他們自己的模型定義相同的模型名稱。Django的:產品型號名稱衝突

我試着使用:

class Meta: 
     db_table = "db_name" 

,但沒有奏效。我仍然在syncdb上收到字段名稱衝突錯誤。有什麼建議麼。

更新

我其實想的Satchmo與Pinax整合。錯誤是:

Error: One or more models did not validate:

contact.contact: Accessor for field 'user' clashes with related m2m field 'User.contact_set'. Add a related_name argument to the definition for 'user'.

friends.contact: Accessor for m2m field 'users' clashes with related field User.contact_set'. Add a related_name argument to the definition for 'users'.

你說得對,表名已經是唯一的。我分析了模型,「聯繫人」模型包含兩種不同應用程序的兩種模型。當我評論這些模型中的一個時,它可以正常工作。

可能是錯誤的,因爲有這兩個應用都是PYTHON_PATH,當其他應用程序定義與衝突發生同名的模型。

+2

當然對於不同的應用程序應用程序標籤應減少衝突的風險。你能提供關於錯誤的更多細節嗎? – 2009-06-24 07:15:07

回答

6

的問題是,無論的Satchmo和Pinax有一個ForeignKey到用戶聯繫人模型。 Django試圖爲每個ForeignKeys添加一個「contact_set」反向關係屬性給用戶,所以出現衝突。

解決的方法是添加類似related_name =「pinax_contact_set」作爲Pinax的接觸模型,或類似的的Satchmo聯繫人模型中的一個參數ForeignKey的。這將需要直接爲其中一個編輯源代碼。你可能能夠通過monkeypatching找到一種方法,但我認爲這很棘手。