Фильтр Django-mptt в шаблоне
Я использую django-filter для фильтрации на своем сайте. Django-filter хорошо работает для моего поля. Но когда я использую категории, которые строю с помощью django-mptt в моем шаблоне не отображается дерево (или таксономия-узел). Я не понимаю, как это сделать. Я пытался создать его, вы можете увидеть мою попытку в template.html. Но я получаю ошибку. Буду рад любому совету.
template.html
<form method="get" class="d-flex flex-column">
{% for su,structure in filter.form.subject|tree_info %}
{% if structure.new_level %}<ul>
<li>{% else %}</li>
<li>{% endif %}
{{ su }}
{% for level in structure.closed_levels %}</li>
</ul>{% endfor %}
{% endfor %}
<button class="btn-primary mt-2" type="submit">Search</button>
</form>
models.py
class Book(models.Model):
title = models.CharField(max_length=255, db_index=True)
author = models.ForeignKey(
"users.CustomUser", on_delete=models.SET_NULL, null=True, db_index=True
)
category = TreeManyToManyField("Category")
class Category(MPTTModel):
name = models.CharField(
max_length=100,
unique=True,
verbose_name=_("category name"),
help_text=_("format: required, max-100"),
)
slug = models.SlugField(
max_length=150,
null=False,
unique=False,
blank=False,
verbose_name=_("category safe URL"),
help_text=_(
"format: required, letters, numbers, underscore, or hyphens"),
)
parent = TreeForeignKey(
"self",
on_delete=models.PROTECT,
related_name="children",
null=True,
blank=True,
unique=False,
verbose_name=_("parent of category"),
help_text=_("format: not required"),
)
class MPTTMeta:
order_insertion_by = ["name"]
class Meta:
verbose_name = _("article category")
verbose_name_plural = _("article categories")
views.py
class ArticleListView(ListView):
model = Book
template_name = "template.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["filter"] = ArticleFilter(
self.request.GET, queryset=self.get_queryset()
)
return context
filters.py
class ArticleFilter(django_filters.FilterSet):
category = TreeNodeMultipleChoiceField
class Meta:
model = Article
fields = {"category"}