【发布时间】:2012-07-08 03:04:53
【问题描述】:
我正在尝试创建一个包含 2 个 ManyToMany 字段的模型,而不允许反向关系。 所以这是模型:
class Camp(models.Model):
#...
free_options = models.ManyToManyField('Option', related_name='+')
paid_options = models.ManyToManyField('Option', related_name='+')
尝试做之后
python manage.py syncdb
我收到以下错误:
错误:一个或多个模型未验证:camps.camp:Accessor for m2m 字段“free_options”与相关的 m2m 字段“Option.+”发生冲突。 在“free_options”的定义中添加一个related_name 参数。 camps.camp:m2m 字段“free_options”冲突的反向查询名称 与相关的 m2m 字段“Option.+”。将related_name 参数添加到 'free_options' 的定义。
在同一个模型上不可能有 2 个没有反向关系的字段吗?我该如何解决这个问题?
谢谢!
【问题讨论】:
-
不确定这是否有帮助,但请尝试through
-
我已经将我的 related_name 值更改为 'camp_free_options' 和 'camp_paid_options',所以我不会使用反向关系。但是,如果您对此有任何解决方案,那么我将能够使用反向关系,请告诉我们。
-
@aisbaa 我不明白related_name 和 through 之间的区别。
-
使用
through选项,您必须创建负责营地和选项之间关系的模型。顺便说一句,你所描述的感觉就像 django 中的一个错误。
标签: python django django-models