python-3.x - 如何使用序列化器制作对象原始字段的简单列表
问题描述
我正在为我的客户创建带有 Django Rest Framework 的 Rest API,在创建它的结构时我很困惑。我想要这样的结构DRF Serializers
:
[
{
"id": 1,
"name": "Alan",
"toys": [
"Robocop",
"Ninja",
"Megalodon"
]
},
{
"id": 2,
"name": "John",
"toys": [
"Avatar",
"Donatello Turtle",
"Super Mario"
]
},
]
我的序列化器看起来像:
class GoodBoyToysSerializer(serializers.Serializer):
name = serializers.CharField()
class GoodBoysSerializer(serializers.ModelSerializer):
toys = serializers.SerializerMethodField()
def get_toys(self, good_boy):
queryset = Toy.objects.filter(good_boy=good_boy)
serializer = GoodBoyToysSerializer(queryset, many=True)
return serializer.data
它返回:
[
{
"id": 1,
"name": "Alan",
"toys": [
{ "name": "Robocop" },
{ "name": "Ninja" },
{ "name": "Megalodon" },
]
},
{
"id": 2,
"name": "John",
"toys": [
{ "name": "Avatar" },
{ "name": "Donatello" },
{ "name": "Super Mario" },
]
},
]
我能做些什么?我尝试使用 ListSerializer 等。但是,不幸的是,所有这些都没用。
Python 3
,DRF
解决方案
尝试在您的序列化程序中返回一个列表:
class GoodBoysSerializer(serializers.ModelSerializer):
toys = serializers.SerializerMethodField()
def get_toys(self, good_boy):
queryset = Toy.objects.filter(good_boy=good_boy)
return queryset.values_list('name', flat=True)
推荐阅读
- python - 使用多个标头转换数据框
- batch-file - 在 SSIS 执行过程任务中将字符串拆分为多个存在的批处理文件脚本
- prolog - 如果查询在 Prolog 中无效,是否存在 SLD 树?
- python - 有什么方法可以替换 sympy 中的内置参数变量名称?
- python - 在python中修改matplolib图例
- apache - How can I access my local Website with other networks?
- oracle - 在 docker-compose down 之后,Dockerized Oracle 模式消失了
- javascript - 允许同时在两个元素上进行光标交互
- java - 如何在我的 Maven 项目中修复 mysql 版本
- qt - 为什么 qt.io 上没有 `QComboBoxListView` 文档