gpt4 book ai didi

django - 使用 django_filters 创建 OR 过滤器

转载 作者:行者123 更新时间:2023-12-05 00:54:22 27 4
gpt4 key购买 nike

我想在我的 django_filters 中创建一个 OR 过滤器。
所有过滤器都完美,除了我的产品名称。

我有一个搜索框,需要在 name_nl、name_en 和 name_fr 列中搜索产品名称。

如何使用 Django_filter 创建或过滤器?

class ProductFilter(django_filters.FilterSet):
status = django_filters.CharFilter(name='productvariant__status_id', lookup_type='exact')
productname = django_filters.CharFilter(name='name_nl', lookup_type='icontains')

class Meta:
model = Product
fields = {
'productname': ['icontains'],
'status': ['exact']
}

最佳答案

你可以这样做。

import django_filters
from django.db.models import Q

from app.models import User

class UserFilter(django_filters.FilterSet):

q = django_filters.MethodFilter()

class Meta:
model = User
fields = []

def filter_q(self, queryset, value):
return queryset.filter(
Q(last_name__icontains=value) | Q(first_name__icontains=value) | Q(email__icontains=value)
)

然后做一个通用 View 。
from django_filters.views import FilterView

from .filters import UserFilter

class AgentListView(ClassRequiredMixin, FilterView):

filterset_class = UserFilter

有关您的模板,请参阅 http://django-filter.readthedocs.org/en/latest/usage.html#the-template

关于django - 使用 django_filters 创建 OR 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701202/

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