Как добавить кнопку сброса для crispy filter.form в Django, чтобы сбросить текущий выбор в полях фильтра?

У меня есть поля django-filters над django-table2 и я хотел бы добавить кнопку reset, которая бы очищала значения, выбранные в определенных полях фильтра. Мой код:

filters.py

class DiaryFilter(django_filters.FilterSet):

    def trade_win_loss(self, queryset, name, value):
        if (value == 'Win'):
            return queryset.filter(netpnl__gt=0)
        if (value == 'Loss'):
            return queryset.filter(netpnl__lt=0)
        if (value == 'BE'):
            return queryset.filter(netpnl=0)
        return queryset

    class Meta:
        model = Diary
        fields = ("ticker", "strategy", "position", "entryDate", "netpnl")

    WIN_LOSS_CHOICES = (
            ('Win', 'Win'),
            ('Loss', 'Loss'),
            ('BE', 'Break Even'),
        )
    
    ticker = django_filters.CharFilter(label="Ticker", lookup_expr='icontains')
    entryDate = django_filters.DateFilter(widget=DateInput(attrs={'type': 'date'}))
    netpnl = django_filters.ChoiceFilter(empty_label='---------', label="NetP/L", choices=WIN_LOSS_CHOICES, method="trade_win_loss")


class DiaryFilterFormHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
            Div(
                Div("ticker", css_class="col-6 col-sm-4 col-md-2"),
                Div("strategy", css_class="col-6 col-sm-4 col-md-2"),
                Div("position", css_class="col-6 col-sm-4 col-md-2"),
                Div("entryDate", css_class="col-6 col-sm-4 col-md-3 col-lg-2"),
                Div("netpnl", css_class="col-6 col-sm-4 col-md-2"),
                Div(Submit('submit', 'Filter', css_class='btn btn-dark'), css_class="col-2 col-md-2 col-lg-1 block my-auto align-bottom"),
                Div(Submit('reset', 'Clear', css_class='btn btn-dark'), css_class="col-1 block my-auto align-bottom"),
                css_class="row"
            )
        )

views.py

class DiaryView(LoginRequiredMixin, SingleTableMixin, FilterView):
    template_name = "diary.html"
    model = Diary
    table_class = DiaryTable
    filterset_class = DiaryFilter

    table_pagination = {
        "per_page": 10
    }

    def get_filterset(self, filterset_class):
        filterset = super().get_filterset(filterset_class)
        filterset.form.helper = DiaryFilterFormHelper()
        return filterset

html шаблон

<div class="col-11">
            <div class="text-center justify-content-center align-bottom">
                {% crispy filter.form %}
            </div>
            {% render_table table  %}
</div>

Поскольку я новичок, я искал похожий код, но не нашел ничего полезного. Я предполагаю, что мне, вероятно, нужно написать какую-то функцию и как-то назначить ее кнопке Clear в filters.py, поэтому любая помощь с примером кода будет оценена по достоинству.

Вернуться на верх