Ich verwandte Name in einer Django Vorlage, um den Fremdschlüssel Datensatz aussehen, und rufen Sie die Count-Methode. Da ich so viele "Main" -Aufzeichnungen habe, erzeugt die for-Schleife in der Vorlage zu viele Abfragen an die Datenbank. Gibt es einen einfachen Weg für mich, die Anzahl der Anfragen an die Datenbank zu reduzieren? Bitte sehen Sie unten für meine Einrichtung.Django - reduzieren Sie die Anzahl der Abfragen in ORM
# models.py
class Main(models.Model):
name = models.CharField(_('Name'), max_length=255)
class Sub1(models.Model):
main = models.ForeignKey(Main, on_delete=models.CASCADE)
name = models.CharField(_('Name'), max_length=255)
class Sub2(models.Model):
main = models.ForeignKey(Main, on_delete=models.CASCADE)
name = models.CharField(_('Name'), max_length=255)
class Sub3(models.Model):
main = models.ForeignKey(Main, on_delete=models.CASCADE)
name = models.CharField(_('Name'), max_length=255)
# views.py
def get_main(request):
main_list = Main.objects.all()
...
# template
{% for main in main_list %}
{{main.sub1_set.count}}
{{main.sub2_set.count}}
{{main.sub3_set.count}}
{% endfor %}
können Sie Felder mit dem Zählwert annotieren. Es gibt ein Beispiel unter https://docs.djangoproject.com/en/1.9/topics/db/aggregation/#combining-multiple-aggregations –