【发布时间】:2010-11-05 09:49:48
【问题描述】:
我正在尝试在我的项目中使用不同的开源应用程序。问题是两个不同的应用程序使用相同的模型名称,并具有自己的模型定义。
我尝试使用:
class Meta:
db_table = "db_name"
但它没有工作。我仍然在 syncdb 收到字段名称冲突错误。任何建议。
更新
我实际上是在尝试将 Satchmo 与 Pinax 集成。错误是:
错误:一个或多个模型未验证:
contact.contact:字段“user”的访问器与相关的 m2m 字段“User.contact_set”发生冲突。为 'user' 的定义添加一个 related_name 参数。
friends.contact:m2m 字段“用户”的访问器与相关字段 User.contact_set 发生冲突。在“用户”的定义中添加一个 related_name 参数。
你是对的,表名已经是唯一的。我分析了模型,模型“联系人”在两个不同应用程序的两个模型中。当我注释掉其中一个模型时,它工作正常。
可能存在错误,因为两个应用程序都在 PYTHON_PATH 中,并且当其他应用程序使用相同名称定义其模型时,就会发生冲突。
【问题讨论】:
-
当然,不同应用的应用标签应该可以降低冲突的风险。您能否提供有关该错误的更多详细信息?
-
是的,数据库表由模式“
_ ”命名,因此不太可能发生冲突。至少那是我在 PostgreSQL 上看到的。请提供更多数据,例如失败的syncdb运行的实际输出 -
您是否两次包含该应用程序?除了实际的错误消息,请从您的 settings.py 中发布 INSTALLED_APPS 设置。
-
请粘贴错误。由于多个 ForeignKeys 指向同一模型,您实际得到的也可能是相关名称冲突。
标签: python django django-models