我有两个应用程序Levels, Classes
与多对多关系,Levels
可以有许多Classes
,Classes
可以有许多Levels
。
我希望classes
和levels
使用相同的表。
我该怎么做?
我试过:
级别/models.py
class Level(models.Model):
name = models.CharField(max_length=50)
classes = models.ManyToManyField(ChildClass, related_name='childclass', blank=True,db_table='level_class', primary_key=False)
child_class/models.py
class ChildClass(models.Model):
name = models.CharField(max_length=50)
levels = models.ManyToManyField('level.Level', related_name='childclass',db_table='level_class')
返回 (错误)
child_class.ChildClass.levels:(fields.E340)字段的中间表“level_class”与表名“level.Level. classes”冲突。level. Level.classes:(fields.E340)字段的中间表“level_class”与表名“child_class.ChildClass. levels”冲突。
2条答案
按热度按时间rfbsl7qr1#
出现此错误的原因是,您在两个不同的模型(Level和ChildClass)中定义了两个ManyToManyField关系,并且试图对这两个关系使用相同的中介表“level_class”。
在多对多关系中,应该只在一端定义关系,另一端可以通过related_name属性访问它。
在您的示例中,可以从ChildClass模型中删除ManyToManyField,而只将其保留在Level模型中。
试试这个:
eufgjt7s2#