2012-07-30 50 views
2

我有一個django模型,與同一模型有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

在我自己的例子,當字段是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