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 %}
Как получить категории в стране через компании, а также количество компаний в этой категории в стране в представлении страны