[英]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.