我正在尝试在我的项目中使用不同的开源应用程序。问题是,两个不同的应用程序使用同一个模型名,并有自己的模型定义。
我试着用:
class Meta:
db_table = "db_name"
但没用。我仍然在syncdb上收到字段名冲突错误。有什么建议。
更新
我实际上是想把萨奇摩和皮纳克斯结合起来。错误是:
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'.
你说得对,表名已经是唯一的了。我分析了模型,模型“Contact”分为两个不同应用程序的模型。当我评论其中一个模型时,它工作得很好。
可能是因为这两个应用程序都在PYTHON_PATH中,当其他应用程序用相同的名称定义其模型时,就会发生冲突。
问题是Satchmo和Pinax都有一个带有用户外键的联系人模型。Django尝试为每个外键向用户添加一个“contact_set”反向关系属性,因此会发生冲突。
解决方案是在pinax的contact模型中或类似的Satchmo contact模型中,将related_name=“pinax_contact_set”添加为ForeignKey的参数。这将需要直接为一个或另一个编辑源。你也许可以通过monkeypatching找到一种方法,但我认为这很棘手。
相关问题 更多 >
编程相关推荐