django-filter 获取查询集
django-filter get queryset
我正在使用 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. This site 说明:
It will generate a Django Form with the search fields as well as
return the filtered QuerySet.
这里指的是SomeModelFilter
函数。我尝试将 len
和 objects
函数应用于它的对象,但它 returns
AttributeError: 'SomeModelFilter' object has no attribute 'len'
AttributeError: 'SomeModelFilter' object has no attribute 'objects'
我想获取过滤后的内容。它对我来说似乎不是 QuerySet。
filters.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
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
我想获取过滤后的内容,希望它包含在 somemodel_filter
对象中。
问题出在这一行print(somemodel_filter.objects.all())
。 somemodel_filter
不是模型,它是过滤器集实例,因为它没有 objects
属性。要获得过滤的查询集,请使用 qs
属性,如下所示:
print(somemodel_filter.qs)
您可以找到过滤器使用示例 here。
filtered_data = ExampleFilter(requet.Get, queryset=Example.objects.all())
获取过滤后的查询集
filtered_queryset_data = filtered_data.qs
使用序列化程序序列化数据。使用 many=true 因为它是一个列表
serialized_data = ExampleSerializer(filtered_queryset_data, many=true).data
我正在使用 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. This site 说明:
It will generate a Django Form with the search fields as well as return the filtered QuerySet.
这里指的是SomeModelFilter
函数。我尝试将 len
和 objects
函数应用于它的对象,但它 returns
AttributeError: 'SomeModelFilter' object has no attribute 'len'
AttributeError: 'SomeModelFilter' object has no attribute 'objects'
我想获取过滤后的内容。它对我来说似乎不是 QuerySet。
filters.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
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
我想获取过滤后的内容,希望它包含在 somemodel_filter
对象中。
问题出在这一行print(somemodel_filter.objects.all())
。 somemodel_filter
不是模型,它是过滤器集实例,因为它没有 objects
属性。要获得过滤的查询集,请使用 qs
属性,如下所示:
print(somemodel_filter.qs)
您可以找到过滤器使用示例 here。
filtered_data = ExampleFilter(requet.Get, queryset=Example.objects.all())
获取过滤后的查询集
filtered_queryset_data = filtered_data.qs
使用序列化程序序列化数据。使用 many=true 因为它是一个列表
serialized_data = ExampleSerializer(filtered_queryset_data, many=true).data