2009-06-24 89 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找到一种方法,但我认为这很棘手。