我正在尝试在我的项目中使用不同的开源应用程序。问题是两个不同的应用程序使用相同的模型名称,它们具有自己的模型定义。
我尝试使用:
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 中,并且当其他应用程序定义其具有相同名称的模型时会发生冲突。
最佳答案
问题是 Satchmo 和 Pinax 都有一个 Contact 模型,它有一个 ForeignKey to User。 Django 尝试为每个外键向用户添加一个“contact_set”反向关系属性,因此存在冲突。
解决方案是添加类似 related_name="pinax_contact_set"的参数作为 Pinax 联系模型中 ForeignKey 的参数,或者类似地在 Satchmo 联系模型中。这将需要直接为一个或另一个编辑源。您也许可以通过 monkeypatching 找到一种方法来完成此操作,但我认为这会很棘手。
关于python - Django:模型名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036506/