-
Notifications
You must be signed in to change notification settings - Fork 772
Closed
Description
Hi all
I'm trying to combine django-filter with crispy-tailwind. The expected behavior is that the ChoiceFilter adds the selected attribute so that the filtered value would be pre-selected. The records are filtered correctly.
This works fine with:
<form method="get">
{{ filter.form.as_p }}
</form>
But doesn't work with:
<form method="get">
{{ filter.form | crispy }}
</form>
With | crispy the ChoiceLists look beautiful, but the filtered value is not selected:
Any thoughts?
Below you'll find a few lines of code. I think I've extracted the relevant pieces. Full code is available in my objector github repository.
models.py
from django.db import models
from django.utils.translation import gettext_lazy as _
from rules.contrib.models import RulesModel
from inventory.models import Object
class Task(RulesModel):
class Statuses(models.IntegerChoices):
OVERDUE = 10, _("Overdue")
DUE = 20, _("Due")
PENDING = 30, _("Pending")
INACTIVE = 40, _("Inactive")
name = models.CharField(_("name"), max_length=200)
description = models.TextField(_("description"), blank=True)
object = models.ForeignKey(
Object,
verbose_name=_("object"),
related_name="task_object",
on_delete=models.CASCADE,
)
filters.py
from .models import Task
import django_filters
class TaskFilter(django_filters.FilterSet):
class Meta:
model = Task
fields = ["status", "object"]
views.py
from django.views.generic import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Task
from .filters import TaskFilter
class TaskListView(LoginRequiredMixin, ListView):
model = Task
paginate_by = 10
def get_queryset(self):
# all groups for user
groups = self.request.user.groups.values_list("pk", flat=True)
groups_as_list = list(groups)
queryset = Task.objects.filter(object__owner=self.request.user)
filterset = TaskFilter(self.request.GET, queryset=queryset)
return filterset.qs
def get_context_data(self, **kwargs):
context = super(TaskListView, self).get_context_data(**kwargs)
filterset = TaskFilter(self.request.GET, queryset=self.queryset)
context["filter"] = filterset
return context
Metadata
Metadata
Assignees
Labels
No labels
