Django соединяет две несвязанные модели с помощью has_many_through

У меня есть 3 модели Django: Company, Category, Country.

a Company имеет отношения многие-ко-многим с Category и принадлежит Country

a Country имеет много Company

ниже приведен мой код для 3 моделей

class Company(models.Model):
    name = models.CharField(max_length = 255, unique =  True)
    country = models.ForeignKey(Country, on_delete = models.CASCADE, related_name = 'companies')
    categories = models.ManyToManyField(Category, related_name = 'companies')

class Country(models.Model):
    name = models.CharField(max_length = 255, unique =  True)

class Category(models.Model):
    name = models.CharField(max_length = 255, unique =  True)

# show method in the country view
def show(request, slug):
    country = get_object_or_404(Country.objects.prefetch_related('companies'), slug = slug)
    context = {
        'country': country
    }
    return render(request, 'countries/show.html', context)

# show.html template for country
{% for company in country.companies.all %}
<a href="{{ company.get_absolute_url }}">{{ company.name|title }}</a><br>
{% empty %}
<p>no companies yet</p>
{% endfor %}

Как получить категории в стране через компании, а также количество компаний в этой категории в стране в представлении страны

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