[英]django-filter get queryset
I am using django-filter v1.1.0 , django 1.11.我正在使用django-filter v1.1.0 ,django 1.11。 I want a dynamic filter for a model.
我想要一个模型的动态过滤器。 I have created filters.py which contains the respective config for model filters.
我创建了filters.py,其中包含模型过滤器的相应配置。 This site tells that:
这个网站告诉我:
It will generate a Django Form with the search fields as well as return the filtered QuerySet.
它将生成一个带有搜索字段的 Django 表单并返回过滤后的 QuerySet。
It here refers to SomeModelFilter
function.这里指的是
SomeModelFilter
函数。 I tried applying len
and objects
functions to it's object, but it returns我尝试将
len
和objects
函数应用于它的对象,但它返回
AttributeError: 'SomeModelFilter' object has no attribute 'len'
AttributeError: 'SomeModelFilter' object has no attribute 'objects'
I want to get the filtered content.我想获取过滤后的内容。 It doesn't seem to be a QuerySet to me.
对我来说,它似乎不是 QuerySet。
filters.py过滤器.py
from project_app.models import *
import django_filters
class SomeModelFilter(django_filters.FilterSet):
class Meta:
model = SomeModel
fields = ['field_a', 'field_b', 'field_c', 'field_d']
views.py视图.py
somemodel_list = SomeModel.objects.all()
somemodel_filter = SomeModelFilter(request.GET, queryset=somemodel_list)
print(len(somemodel_filter)) # This gives the first error
print(somemodel_filter.objects.all()) # This gives the second error
I want to get the filtered content, hopefully which is contained in somemodel_filter
object.我想获得过滤后的内容,希望它包含在
somemodel_filter
对象中。
The problem is in this line print(somemodel_filter.objects.all())
.问题出在这行
print(somemodel_filter.objects.all())
。 somemodel_filter
is not model, it's filterset instance and since it's don't have objects
attribute. somemodel_filter
不是模型,它是 filterset 实例,因为它没有objects
属性。 To get filtered queryset use qs
attribute, like this:要获取过滤的查询集,请使用
qs
属性,如下所示:
print(somemodel_filter.qs)
filtered_data = ExampleFilter(requet.Get, queryset=Example.objects.all())
filtered_queryset_data = filtered_data.qs
serialized_data = ExampleSerializer(filtered_queryset_data, many=true).data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.