我想向fields基于Django Rest Framework的API 添加查询参数,该参数使用户只能为每个资源选择字段的子集。
例
序列化器:
class IdentitySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = models.Identity
fields = ('id', 'url', 'type', 'data')
常规查询将返回所有字段。
GET /identities/
[
{
"id": 1,
"url": "http://localhost:8000/api/identities/1/",
"type": 5,
"data": "John Doe"
},
...
]
具有fields
参数的查询应仅返回字段的子集:
GET /identities/?fields=id,data
[
{
"id": 1,
"data": "John Doe"
},
...
]
具有无效字段的查询应忽略无效字段或引发客户端错误。
目标
这是否可能开箱即用?如果没有,最简单的实现方法是什么?周围是否有第三方包装?
你可以覆盖序列化__init__
方法,并fields
根据查询参数动态设置属性。你可以在request
整个上下文中访问对象,并将其传递给序列化程序。
这是此问题的Django Rest Framework文档示例的复制和粘贴:
from rest_framework import serializers
class DynamicFieldsModelSerializer(serializers.ModelSerializer):
"""
A ModelSerializer that takes an additional `fields` argument that
controls which fields should be displayed.
"""
def __init__(self, *args, **kwargs):
# Instantiate the superclass normally
super(DynamicFieldsModelSerializer, self).__init__(*args, **kwargs)
fields = self.context['request'].query_params.get('fields')
if fields:
fields = fields.split(',')
# Drop any fields that are not specified in the `fields` argument.
allowed = set(fields)
existing = set(self.fields.keys())
for field_name in existing - allowed:
self.fields.pop(field_name)
class UserSerializer(DynamicFieldsModelSerializer, serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email')
正如blogpost关于设计实用的RESTful API的最佳实践中所推荐的,我想在基于Django Rest框架的API中添加一个查询参数,该参数允许用户仅选择每个资源的字段子集。 序列化程序: 常规查询将返回所有字段。 具有参数的查询应仅返回字段的子集: 包含无效字段的查询应忽略无效字段或引发客户端错误。 这是不是可能的?如果没有,实现这一点最简单的方法是什么?是否有一个第三方包已经做到这一点
任何人都可以帮助我查询mongo以释放数组,我使用的是mongdb本机驱动程序我的收集文档如下,也请忽略我的objectId它只是示例 而我的预期产出是 我只想解开我的数组,在一个查询中的爱好描述之间添加一个逗号,谢谢你的帮助
因此,首先,我正在构建一个基于Selenium和Java的自动化库。我正在构建一种参数化传递到测试方法中的数据的方法。我正在使用TestNG。 我需要帮助的是构建这个数据提供程序方法... 现在,如果我返回指定的类,它将与其中的一个一起工作。 示例: 如果您想查看我在GitHub上的项目,可以访问:https://GitHub.com/dominic-pace/autocorecomons
总的表格表头配置,可以手动新增字段 接口返回数据如下的时候 表格展示海区跟水温 就是动态表头,后台返回什么字段,表头配置的 columns 就是什么字段 有什么好的方法吗
问题内容: {用户名:’我’,公司:{“您的公司”:{…}} 我想在用户记录(用户集合)中插入公司,以便: {username:’me’,companies:{“ yourcompany”:{…},“ mycompany”:{…}} 但是这个名字是动态的。 为此。.{username:’me’,companies:{“ yourcompany”:{…},“ companyid”:{…}} 我该怎么
问题内容: 如何在结果中返回特定字段的标记 例如,一个GET请求 退货 我想在结果中包含“ _source.message”字段的标记 问题答案: 使用以下script_fields脚本还有另一种方法: 重要的是要注意,尽管此脚本返回已被索引的实际术语,但它也会缓存所有字段值,并且在大索引上会占用大量内存。因此,在较大的索引上,使用以下MVEL脚本从存储的字段或源中检索字段值并快速重新解析它们可能