我正在尝试使用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字段'选项。+'发生冲突。 将related_name参数添加到'free_options'的定义中。 camps.camp:m2m字段'free_options'冲突的反向查询名称 与相关的m2m字段'选项。+'。添加一个related_name参数 'free_o ptions'的定义。
在同一型号上是否不可能有2个没有向后关系的字段?我该如何解决这个问题?
谢谢!
答案 0 :(得分:0)
我会问为什么你会因为有向后的关系而烦恼,如果你不想要它就不要使用它。但要回答这个问题,没有办法完全删除它。
答案 1 :(得分:0)
根据related_name argument of the ManyToManyField的Django文档:
如果您有多个指向同一模型的ManyToManyField 并且想要抑制向后关系,将每个related_name设置为 以<+'
结尾的唯一值
强调我的。
因此,如果你想这样做,你应该能够简单地:
class Camp(models.Model):
#...
free_options = models.ManyToManyField('Option', related_name='free_options+')
paid_options = models.ManyToManyField('Option', related_name='paid_options+')
# ^^^^^^^^^^^^
在同一模型中抑制多个ManyToManyField的向后关系。
希望这有帮助!