2

同じモデルに対して多対多の関係が2つあるdjangoモデルがあります。

そのうちの 1 つは、次のような「スルー」オプションを使用します。

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」が設定されています..2番目のフィールドだけを期待していました..最初のフィールドには「rel.to」がありますが、「rel.through」はありません

4

1 に答える 1

1

私の例では、field が property1 の場合、is_hidden()が返さTrueれます。これは、隠れた関係に関するこの概念があるためです。また、この関係を表しているため、property2.rel.id_hidden()返されます。FalseModel3

# 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 に答える