2

我有一个与同一模型有 2 个多对多关系的 django 模型。

其中之一使用“通过”选项,例如:

class MyModel(models.Model):
    ....
    property1 = models.ManyToManyField(Model2, related_name="internal", blank=True, null=True)
    property2 = models.ManyToManyField(
        Model2,
        related_name="external",
        through="Model3"
    )

在迭代 model_instance._meta.m2m_data 时,如何检查“property2”?

两个字段都设置了“rel.through”..我只期待第二个字段..而在第一个字段中我会有“rel.to”而不是“rel.through”

4

1 回答 1

1

在我自己的示例中,当字段为propery1 时,is_hidden()将返回True,因为存在关于隐藏关系的概念。另外,property2.rel.id_hidden()将返回FalsesinceModel3表示这种关系。

# for some reason, User.groups has field.is_hidden() == None
if field.rel.is_hidden() == None:
    hidden_field = True
else:
    hidden_field = field.rel.is_hidden()

这里的用法:https ://github.com/felipecruz/dmqs/blob/master/dmqs/integration/memorify_django_model.py#L28

于 2012-10-04T02:38:07.010 回答