Django:模型名称冲突

2024-05-19 19:29:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的项目中使用不同的开源应用程序。问题是,两个不同的应用程序使用同一个模型名,并有自己的模型定义。

我试着用:

    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中,当其他应用程序用相同的名称定义其模型时,就会发生冲突。


Tags: name模型应用程序fieldfordb定义错误
1条回答
网友
1楼 · 发布于 2024-05-19 19:29:23

问题是Satchmo和Pinax都有一个带有用户外键的联系人模型。Django尝试为每个外键向用户添加一个“contact_set”反向关系属性,因此会发生冲突。

解决方案是在pinax的contact模型中或类似的Satchmo contact模型中,将related_name=“pinax_contact_set”添加为ForeignKey的参数。这将需要直接为一个或另一个编辑源。你也许可以通过monkeypatching找到一种方法,但我认为这很棘手。

相关问题 更多 >