我正在尝试在我的项目中使用不同的开源应用程序。问题是两个不同的应用程序使用相同的模型名称并具有自己的模型定义。
我尝试使用:
class Meta:
db_table = "db_name"
但没有成功。我在syncdb 上仍然遇到字段名称冲突错误。有什么建议。
Update
我实际上正在尝试将 Satchmo 与 Pinax 集成。错误是:
错误:一个或多个模型未验证:
contact.contact:字段“user”的访问器与相关 m2m 字段“User.contact_set”冲突。将 related_name 参数添加到“user”的定义中。
Friends.contact:m2m 字段“users”的访问器与相关字段“User.contact_set”冲突。将 related_name 参数添加到“users”的定义中。
你是对的,表名已经是唯一的。我分析了模型,模型“联系人”位于两个不同应用程序的两个模型中。当我注释掉其中一个模型时,它工作得很好。
可能存在错误,因为两个应用程序都在 PYTHON_PATH 中,并且当其他应用程序定义其具有相同名称的模型时,会发生冲突。
问题是 Satchmo 和 Pinax 都有一个带有指向用户的外键的联系人模型。 Django 尝试为每个外键向用户添加“contact_set”反向关系属性,因此存在冲突。
解决方案是将类似 related_name="pinax_contact_set" 的内容添加为 Pinax 联系人模型中的foreignkey 的参数,或者在 Satchmo 联系人模型中类似的参数。这将需要直接编辑其中之一的源代码。您也许可以找到一种通过猴子补丁来完成此操作的方法,但我认为这会很棘手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)