Djangoテンプレートでrelated_nameを使用して外部キーレコードを調べ、countメソッドを呼び出しました。私は非常に多くの "メイン"レコードを持っているので、テンプレート内のforループはデータベースに多すぎるクエリを作成します。データベースへのクエリの数を減らすための簡単な方法があれば?私の設定については下記をご覧ください。Django - 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 %}
することができますフィールドにカウント値を注釈する。 https://docs.djangoproject.com/en/1.9/topics/db/aggregation/#combining-multiple-aggregations –