Я использовал связанное имя в шаблоне Django, чтобы посмотреть запись внешнего ключа и вызвать метод подсчета. Поскольку у меня так много записи «Главная», цикл 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 –