Python Django REST框架:向渲染器提供QuerySet
我们希望使用Django REST框架将模型数据(通过Django REST框架API指定的过滤)呈现为绘图。我们的绘图引擎直接与DjangoPython Django REST框架:向渲染器提供QuerySet,python,django,django-rest-framework,django-queryset,Python,Django,Django Rest Framework,Django Queryset,我们希望使用Django REST框架将模型数据(通过Django REST框架API指定的过滤)呈现为绘图。我们的绘图引擎直接与DjangoQuerySets配合使用 问题是:如何将模型数据序列化为DjangoQuerySets 我们尝试创建一个只传递数据的序列化程序(没有成功): 如果可以通过Django REST框架(通过Django REST框架URL系统提供的参数)访问与内部访问相同的QuerySet,那就太好了 mymodel.objects.filter(<my filter
QuerySets
配合使用
问题是:如何将模型数据序列化为DjangoQuerySets
我们尝试创建一个只传递数据的序列化程序(没有成功):
如果可以通过Django REST框架(通过Django REST框架URL系统提供的
参数)访问与内部访问相同的QuerySet
,那就太好了
mymodel.objects.filter(<my filter>)
mymodel.objects.filter()
关于如何实现这一点有什么想法吗?你的意思是做这样的事情吗
from rest_framework import generics, serializers
from .models import Foo
class QuerySetSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ('id', 'field1', 'field2',)
class QuerySetList(generics.ListAPIView):
serializer_class = QuerySetSerializer
def get_queryset(self):
return Foo.objects.filter(<my filter>) # You can filter whatever you want here
从rest\u框架导入泛型、序列化程序
from.models导入Foo
类QuerySetSerializer(serializers.ModelSerializer):
类元:
model=Foo
字段=('id','field1','field2',)
类QuerySetList(generics.ListAPIView):
序列化程序_class=QuerySetSerializer
def get_queryset(自我):
return Foo.objects.filter()#您可以在此处筛选任何需要的内容
我不明白您希望如何传输数据。您不想将其序列化为JSON?没错。我希望呈现程序
能够访问对应于API查询的QuerySet
实例。(然后,Renderer
可以使用QuerySet
执行任何它想要的操作-在我的例子中,调用QuerySet
上的一个方法,该方法将创建一个.png的绘图)。(参见我对@jape的评论-希望更清楚?)我想要的一个例子是:假设有一个Django模特,他有名字和电子邮件。通过API,我可以访问具有特定名称的所有Person实例,如下所示:/API/?name=John
。我希望能够访问Person QuerySet(在渲染器中),而不是从这些实例创建json。这应该等于您通过Person.objects.filter(name=John)
获得的结果。因此,我的问题是:当访问任意API url/API/?name=John
时,如何向渲染器提供相应的查询集。(现在更清楚了吗?如果情况允许,我可以更新我上面的Q?)
from rest_framework import generics, serializers
from .models import Foo
class QuerySetSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ('id', 'field1', 'field2',)
class QuerySetList(generics.ListAPIView):
serializer_class = QuerySetSerializer
def get_queryset(self):
return Foo.objects.filter(<my filter>) # You can filter whatever you want here