我有一个名为Cell
的模型,它与自身具有多对多关系,称为combined_from
。
class Cell(models.Model):
combined_from = models.ManyToManyField('self', related_name='combined_into', blank=True)
...
我要建模的是一个单元可以与多个其他单元合并,并且这些单元知道它们已合并为另一个单元(这是这些单元的生命尽头的情况)。
因此,当我合并3个单元格(我们称它们为c1, c2, c3
)时,我将创建一个新的单元格(称为c4
),然后执行c4.combined_from.add(c1, c2, c3)
。
到目前为止,还不错,但是我的问题是,当我看着c1.combined_from.all()
时,我可以看到c4出现在这里!
我通过终端中的一个最小示例验证了此行为
>>> from cells.models.models import *
>>> from MCH4.utils.debug.queryrecorder import record_queries
>>> c1 = Cell.objects.first()
>>> c2 = Cell.objects.last()
>>> c1.combined_from.clear()
>>> c2.combined_from.clear()
>>> c1.combined_from.count()
0
>>> c2.combined_from.count()
0
>>> c1.combined_from.add(c2)
>>> c1.combined_from.count()
1
>>> c2.combined_from.count()
1
关于如何可能发生甚至我如何避免再次发生的任何想法。如果相关信息,我正在使用django 1.11。