Django:模型名称冲突

时间:2009-06-24 05:19:37

标签: python django django-models

我正在尝试在我的项目中使用不同的开源应用程序。问题是两个不同的应用程序使用相同的模型名称和它们自己的模型定义。

我尝试使用:

    class Meta:
        db_table = "db_name"

但它不起作用。我仍然在syncdb上遇到字段名称冲突错误。任何建议。

更新

我实际上是在尝试将Satchmo与Pinax集成。错误是:

  

错误:一个或多个模型未验证:

     

contact.contact:字段'user'的访问者与相关的m2m字段'User.contact_set'发生冲突。将related_name参数添加到'user'的定义中。

     

friends.contact:m2m字段'用户'与相关字段User.contact_set'冲突的访问者。将related_name参数添加到“users”的定义中。

你是对的,表名已经是唯一的。我分析了模型,模型'联系'是两个不同应用程序的两个模型。当我评论其中一个模型时,它工作正常。

可能是错误,因为两个应用程序都在PYTHON_PATH中,当其他应用程序定义具有相同名称的模型时,就会发生冲突。

1 个答案:

答案 0 :(得分:6)

问题是Satchmo和Pinax都有一个带有ForeignKey to User的Contact模型。 Django尝试为每个ForeignKeys为User添加一个“contact_set”反向关系属性,因此存在冲突。

解决方案是在Pinax的Contact模型中将foreign_name =“pinax_contact_set”作为参数添加到ForeignKey,或者在Satchmo Contact模型中添加类似的东西。这将需要直接为一个或另一个编辑源。你或许可以通过monkeypatching找到一种方法,但我希望这很棘手。