Доступ к графу по внешнему ключу в шаблоне Django
У меня есть два models
: Farm
и Animal
с отношением ForeignKey
.
Каждый Farm
содержит x
животных.
Я делаю таблицу во фронтенде с циклом for
из каждого farm
. Как я могу показать количество животных в каждой ферме?
модели:
class Farm(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True, default=None)
square_meter = models.IntegerField(blank=True, null=True)
friendly_name = models.CharField(max_length=24, blank=True)
kml = models.FileField(upload_to=user_directory_path_kml, null=True, blank=True)
class Animal(models.Model):
class Meta:
verbose_name_plural = "Animals"
farm = models.ForeignKey(Farm, on_delete=models.CASCADE, blank=True, null=True, default=None)
name = models.CharField(max_length=24, blank=True)
datetime = models.DateTimeField(blank=True, null=True, default=datetime.now)
tracking = models.BooleanField(default=False)
kg = models.IntegerField(blank=True, null=True)
template:
{% for farm in farms %}
<tr>
<th scope="row">{{forloop.counter}}</th>
<td>{{farm.friendly_name}}</td>
<td>{{farm.square_meter}}</td>
<td>{{farm. }}</td> # Here I want animal count
</tr>
{% endfor %}
Поскольку вы не указали related_name
для внешнего ключа фермы Animal
, вы можете использовать менеджер внешних ключей по умолчанию <class name>_set
. Этот менеджер имеет метод count
. Таким образом
{{ farm.animal_set.count }}
необходимо предоставить количество животных для каждой фермы.