2016-06-20 12 views
0

Angenommen, ich habe ein Verhältnis von vielen zu vielen Beziehungen in meinem Modell, was ich versuche, alle zugehörigen Entitäten zu erhalten, wenn das Feld in der Entität äquivalent zu MAMMAL ist. Ich mache das derzeit in einem Listenverständnis, frage mich aber, ob es eine elegantere Lösung gibt, die django-Modelle bieten.Django filter manytomany Ergebnisse

[related_entity for related_entity in related_entity.related_entities.all() if 
            related_entity.entity_type.entity_type_label == 'MAMMAL'] 

Antwort

2

A many-to-many-Feld gibt Ihnen einen Manager, genau wie der Standard Model.objects() ein, und Sie können es filtern, die in genau der gleichen Art und Weise:

related_entity.filter(entity_type__entity_type_label="MAMMAL") 
+0

Ah Dank! also sollte ich beim Filtern immer model__field = 'somevalue' machen? Ich habe model.field = 'value' gefiltert. –

+0

Nein, es ist für die Traversierung von Beziehungen: es ist 'field__relatedfield = 'valueofrelatedfield''. Du hast deine tatsächlichen Modelle nicht gezeigt, daher ist es ein bisschen schwierig zu wissen, ob du das brauchst oder nicht. –

+0

Hab es, danke! –