这个问题是要展开并填补这个洞:Return results from multiple models with Django REST Framework
我的目标是返回一个json对象,我将使用它动态地填充html代码中各种select语句中的选项。
所以我想从模型a中获取一个属性,从模型b中获取另一个属性
然后我要属性a,b,c的所有值
以JSON数组的形式存在于一个键中,因此
json = {
modelA: {'atter1, atter2, atter3}
modelB: {'atter1, atter2, atter3}
model..:{you get the point}
}
上面提到的帖子中的这一部分是有意义的:
class TimelineViewSet(viewsets.ModelViewSet):
"""
API endpoint that lists all tweet/article objects in rev-chrono.
"""
queryset = itertools.chain(Tweet.objects.all(), Article.objects.all())
serializer_class = TimelineSerializer
不是这样的:
class TimelineSerializer(serializers.Serializer):
pk = serializers.Field()
title = serializers.CharField()
author = serializers.RelatedField()
pub_date = serializers.DateTimeField()
如何将分离的模型属性设置为正确的json键?
我假设它类似于序列化器关系,但这些值并不通过onetoone、onetomany或many-to-many相互关联。我只想一次获取所有这些信息,而不是为每个值创建一个api。
我是一个迷路的小女孩,我请求你帮我找到回家的路。
我也遇到过同样的情况:序列化多个模型,从每个序列化模型获取过滤后的输出,以便从单个api中使用。为了达到这个结果,我遇到了this module。
如果您合理地设计响应格式,那么在Django REST框架中您会发现事情更简单。
目前看来有点模糊,但我建议如下:
我们可以用三个序列化程序来表达,比如:
http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects
然后,因为我们使用的是多个模型,所以很容易定义自己的自定义视图集,而不是试图将其设置为DRF的magic model viewset类型。
http://www.django-rest-framework.org/api-guide/viewsets/#example
首先,我们需要一个对象类型来传递给TimelineSerializer。它应该有两个属性:
tweets
和articles
然后,我们将定义自定义视图集以获取tweets和文章,实例化Timeline对象并返回TimelineSerializer数据:
相关问题 更多 >
编程相关推荐