Filtrage avec django-filter avec un AllValuesFilter
sur un grand nombre à plusieurs champs et d'afficher ce via LinkWidget
, je ne reçois pas une option de filtre All
, comme le django admin list_filter
.django-filtre: ajouter « All » option de filtre pour AllValuesFilter avec LinkWidget
J'ai trouvé Add Any & None Handling to ChoiceFilter (and subclasses) et diverses autres questions connexes, mais je ne comprends pas la solution ...
Dans ce cas précis, je suis le filtrage sur les catégories pour un modèle Django WagtailPage
:
# models.py
# wagtail imports
# ...
# modelcluster imports, eg.
# from modelcluster.fields import ParentalKey, ParentalManyToManyField
class CategoryRegion(models.Model):
title = models.CharField(max_length=200,)
class NewsPage(Page):
categories_region = ParentalManyToManyField(
"core.CategoryRegion",
blank=True,
)
-
# filters.py
import django_filters
from django_filters.widgets import LinkWidget
class NewsFilter(django_filters.FilterSet):
categories_region = django_filters.AllValuesFilter(
name="categories_region__title",
label="Categories: Region",
widget=LinkWidget(),
)
class Meta:
model = NewsPage
fields = ['categories_region',]
Tous les conseils?
Je vous suggère d'essayer de reproduire cela sur un nouveau projet (non Bergeronnette) en utilisant une plaine 'ManyToManyField' plutôt qu'un' ParentalManyToManyField'. Les types de champs de Modelcluster reposent sur des internes de Django obscurs et pas entièrement stables, ce qui aidera à déterminer si ces défauts de Modelcluster sont à blâmer, ou s'il s'agit d'un problème de 'django-filter' pur (auquel cas je ne peux pas aider , mais j'espère que quelqu'un d'autre le fera ...) – gasman
Ok, je vais essayer ça. Fait intéressant, en accrochant un 'ModelAdmin' sur ce modèle de page et en définissant' categories_region' en tant que 'list_filter', j'obtiendrai l'option' All' dans ce 'ModelAdmin'. – tombreit