簡體   English   中英

如何使用django-filter app中的MethodFilter?

[英]How use MethodFilter from django-filter app?

我不知道如何在django-filter app中使用MethodFilter,我在文檔中找不到它( http://django-filter.readthedocs.org/en/latest/index.html )。 我需要創建過濾器,使用from和to輸入日期字段。 您是否知道如何使用MethodFilter或其他方式執行此操作?

我有一些課:

class Product(django_filters.FilterSet):

    class Meta:
        model = Product
        fields = ['name', 'category', 'created_at]

我有字段created_at,我想通過created_at(from和to)過濾產品。

要回答如何使用MethodFilter問題的一部分,請在FilterSet上定義一個方法,並將其指定為過濾器的action

例如,要按用戶名進行過濾,您可以執行以下操作:

class F(FilterSet):
    username = MethodFilter(action='filter_username')

    class Meta:
        model = User
        fields = ['username']

    def filter_username(self, queryset, value):
        return queryset.filter(
            username=value
        )

我不確定我完全理解你的要求,但過濾你的產品你可以使用Q.

https://docs.djangoproject.com/en/1.7/topics/db/queries/#complex-lookups-with-q

from django.db.models import Q
queryset = Products.objects.filter(Q(created_at__gte=from)&Q(created_at__ite=to)

我在GitHub中搜索過,我找到了這個。 有用。

class DateRangeField(django_filters.fields.RangeField):
    # Django-Filter DateRangeFilter that really accepts a range of dates ;)
    def __init__(self, *args, **kwargs):
        fields = (
            forms.DateField(),
            forms.DateField(),
        )
        forms.MultiValueField.__init__(self, fields, *args, **kwargs)


class DateRangeFilter(django_filters.RangeFilter):
    field_class = DateRangeField

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM