Je dispose d'une liste de pages de catégories obtenue comme suit :
category_ids = request.GET.getlist('category[]')
category_pages = MyCategoryPage.objects.filter(pk__in=category_ids)
Ce que j'aimerais faire, c'est affiner une liste de pages pour inclure uniquement celles qui sont des enfants des catégories spécifiées ci-dessus.
Je sais que vous pouvez le faire pour un objet comme suit :
pages = MySubPage.objects.child_of(category)
.. mais autant que je sache, il n'y a aucun moyen de faire child_of(category_pages)
pour plus d'un parent.
Dans Django normal, où j'aurais probablement une ForeignKey
sur MySubPage
, je ferais simplement :
pages = MySubPage.objects.filter(category__in=filter_categories)
.. mais encore une fois, je ne suis pas sûr que je puisse le faire dans Wagtail.
Je sais que je pourrais probablement boucler à travers toutes les catégories et ajouter les sous-pages à une liste :
pages = []
for category in category_pages:
pages.append(MySubPage.objects.child_of(category))
...puis les regrouper, mais cela ne semble pas très efficace et évidemment cela renverrait une liste au lieu d'une queryset.
J'ai cherché dans la documentation mais je n'ai pas trouvé de moyen plus direct d'atteindre cela.