如何使用 Django 过滤器添加初始/默认值?

Pro*_*eus 8 python django

使用Django 过滤器时如何添加初始/默认值?

例如,这样的事情 initial=False

class UserFilter(django_filters.FilterSet):
    archive = django_filters.BooleanFilter(initial=False)

    class Meta:
         model = User
         fields = ['archive']
Run Code Online (Sandbox Code Playgroud)

我已经厌倦了覆盖,__init__但这似乎不起作用。

Ily*_*hov 9

对于 DRF,您可以尝试覆盖__init__

def __init__(self, *args, **kwargs):
    kwargs['data']._mutable = True
    if 'archive' not in kwargs['data']:
        kwargs['data']['archive'] = False
    kwargs['data']._mutable = False
    super(UserFilter, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但你应该阅读django-filter.readthedocs.io...using-initial-values-as-defaults


jrb*_*ard 5

您可以尝试覆盖以下__init__方法UserFilter

def __init__(self, *args, **kwargs):
    super(UserFilter, self).__init__(*args, **kwargs)
    self.form.initial['archive'] = False
Run Code Online (Sandbox Code Playgroud)