0

我想在两个不同的 m2m 字段之间进行自动关系绑定。这是我想要的工作流程的示例:

  1. 创建标签“绿色”
  2. 创建标签“颜色”并将“绿色”标记为孩子
  3. 现在,当我回到“绿色”标签面板时,父母之间需要有“颜色”

不幸的是,这并不是那么简单,我什么也想不出来。我尝试将对称设置为 True,但这只是造成不必要的循环(“绿色”不是“颜色”的父级!)

# my models.py
class Tag(models.Model):
    ...
    children = models.ManyToManyField(
        'self',
        blank=True,
        related_name="kids",
        symmetrical=False
    )
    parents = models.ManyToManyField(
        'self',
        blank=True,
        related_name="folks",
        symmetrical=False
    )

感谢帮助。

4

1 回答 1

2

我相信你想要做的事情可以通过一个 M2M 关系来完成。查看对称的文档。如果您定义一个不对称场,您可以使用related_name参数来定义另一个关系:

class Tag(models.Model):
  name = models.TextField()
  children = models.ManyToManyField(
      'self',
      blank=True,
      related_name="parents",
      symmetrical=False
  )

green = Tag.objects.create(name='green')
color = Tag.objects.create(name='color')
color.children.add(green)
color in green.parents.all() # True
于 2013-02-21T01:30:40.783 回答