Список идентификаторов детей в шаблоне django

Вот мой models.py:

#child
class Country(models.Model):
    name = models.CharField(max_length=255)
    wine_rg = models.ManyToManyField(WineRegion, blank=True)


#parent
class WorldRegion(models.Model):
    name = models.CharField(max_length=255)
    country = models.ManyToManyField(Country, blank=True)

    def __str__(self):
        return self.name

views.py:

world_region_filters = WorldRegion.objects.all()

templates/test.html:

{% for world_region in world_region_filters %}
{{ world_region.name }} - {{ return list of country ID }}
{% endfor %}

Как вернуть все ID стран (дочерних) в шаблоне django? Я знаю, что могу сделать это:

{% for country in world_region.country.all %} {{ country.id }} {% endfor %}

Но есть ли способ сделать его короче? Я пробовал следующее:

{{ world_region.country.all.id }}

Но это не работает. Есть предложения?

Если вы используете PostgresSQL, то вы можете использовать ArrayAgg следующим образом:

from django.contrib.postgres.aggregates.general import ArrayAgg
from django.db.models import Count

world_region_filters = WorldRegion.objects.all().annotate(
    
    country_list=ArrayAgg('country', distinct=True),
) 

Я не знаю, зачем вам нужен список идентификаторов в html. все, что вы реализовали, хорошо, но если вам нужен список идентификаторов, возможно, вы можете сделать так:

data = WorldRegion.objects.all().values("name", "country_id")
region_names = [ i['name'] for i in data ]
country_ids = [ i['country_id'] for i in data ]

тогда вы можете передать его в html как контекст

Вернуться на верх