У меня есть две модели следующим образом:
class Tag(models.Model):
# ...
class Paragraph(models.Model):
tags = models.ManyToManyField(Tag)
# ...
Внутри шаблона я перебираю набор запросов из Paragraph
объектов, чтобы отобразить их, используя тег {% for %}
. Мне также нужно отображать связанные теги, но только если они отличаются от предыдущей итерации.
Это означает, что если я отображаю список из 5 абзацев, и первые четыре из них имеют идентичные теги, а пятый имеет разные теги, я хочу отображать теги только по первому и пятому абзацам.
Я пытался использовать встроенный тег {% ifchanged %}
, но, как я понял, я не могу использовать {% ifchanged paragraph.tags.all %}
, потому что он всегда будет возвращать True
, даже если paragraph.tags.all
содержит те же элементы.
Так что я думаю о том, чтобы увидеть собственный шаблонный тег {% iftagschanged %}
в основании тега {% ifchanged %}
, но с использованием другого метода сравнения, который сравнивает содержимое наборов запросов, состоящее из самих наборов запросов, которые всегда не совпадают.
Проблема в том, что, глядя на тег {% ifchanged %}
в исходном коде django , он выглядит немного сложным для меня, и я не могу понять, как изменить его для правильной работы в моем случае.
Так что я буду благодарен за совет или, возможно, идею любого другого решения.