Django模型内省 - 通过多对多来定期多对多

时间:2012-07-30 20:51:10

标签: django django-models

我有一个与同一模型有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”

1 个答案:

答案 0 :(得分:1)

在我自己的例子中,当field是propery1时,is_hidden()将返回True,因为有关于隐藏关系的概念。另外,property2.rel.id_hidden()会返回False,因为Model3代表这种关系。

# 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