2016-07-28 12 views
1

Ich habe das folgende Modell, und ich muss herausfinden, wie viele OtherModel-Instanzen auf die gleiche MyModel-Instanz zeigen.Django-Modell - Wählen Sie verwandte Anzahl

class MyModel(models.Model): 
    int = models.SmallIntegerField() 

class OtherModel(models.Model): 
    other_model = models.ForeignKey(MyModel, null=True, blank=True) 
    int = models.SmallIntegerField() 

Ich kann eine for-Schleife verwenden, aber die Leistung ist sehr schlecht. Gibt es eine andere Möglichkeit, alle MyModel-Objekte auszuwählen und die zugehörige Anzahl in einer Abfrage abzurufen?

for m in MyModel.objects.all(): 
     count = self.othermodel_set.count() 

Antwort

3
from django.db.models import Count 

result = MyModel.objects.all().annotate(othermodel_count=Count('othermodel')) 

Django doc über aggregation features.

Verwandte Themen