gpt4 book ai didi

python - 使用 django-filters 设置初始值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:22 25 4
gpt4 key购买 nike

使用 django-filters 时应用程序,如何在过滤器中设置字段的初始值?

通常使用Django中的标准形式,例如一个简单的选择列表形式:

class MyForm(forms.Form):
OPTIONS=(('APP','Apple'),('BAN','Banana'))
country = forms.ChoiceField(widget=forms.Select(),
choices=OPTIONS, initial='BAN')

将表单条目初始化为 Banana。但是,在我的 filter.py 中,如果我有类似的内容:

class MyFilter(django_filters.FilterSet):
OPTIONS=(('APP','Apple'),('BAN','Banana'))
myfield = django_filters.ChoiceFilter(
widget=django_filters.widgets.forms.Select(),choices=OPTIONS)
.
.

我在哪里放置 initial='BAN' 以获得下拉列表中最初选择的元素等?我尝试了 ChoiceFilter 参数和 Select() 参数无济于事。

我认为 Filters 的想法是非常接近地反射(reflect) Forms 的行为,只是明显增加了过滤的好处,所以我很惊讶初始化(到在我看来)直观的地方不起作用。

最佳答案

与其他答案不同,我不会通过更改 request.GET 中的数据,而是直接修改查询集来做到这一点:

def get_filterset_kwargs(self, filterset_class):
kwargs = super().get_filterset_kwargs(filterset_class)
if kwargs['data'] is None:
kwargs['queryset'] = kwargs['queryset'].filter(myfield ='BAN')
return kwargs

我使用这种方法是因为通过改变 kwargs['data']request.GETdict,您松开了 getlist 方法,每个键只能检索一个值。

关于python - 使用 django-filters 设置初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com