Ограничение набора запросов, отображаемых после внешнего ключа в шаблоне - Django

Я знаю, как вернуть все объекты по внешнему ключу в шаблоне Django. Но как ограничить их количество последними 3? Возможно ли это?

Пример

Models.html

class Person(models.Model):
    ...

class Tag(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    name = models.CharField(max_length=10)

Template.html

{% for tag in person.tag_set.all %}
    ...
{% endfor %}

Что ожидается (только последние 3 объекта)?

{% for tag in person.tag_set.all[:3] %}
    ...
{% endfor %}

Используйте фильтр шаблона slice для нарезки кверисета/списка, это позволяет получить первые 3 элемента

{% for tag in person.tag_set.all|slice:":3" %}

Отрицательная индексация кверисетов не поддерживается, получение последних трех было бы сложным в шаблоне

Не уверен, что это можно использовать в шаблоне, но вы можете подготовить свой кверисет, используя reverse(). https://docs.djangoproject.com/en/dev/ref/models/querysets/#reverse

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