django - DRF - 如何从序列化器数组创建 ListSerializer
问题描述
我有一个使用函数填充的序列化程序。所以我将这个特定序列化程序的列表堆叠在一个数组上。
我如何将这个序列化器数组转换为 ListSerializer?
这是我的代码:
serializers.py
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = models.Course
fields = (
'name',
)
class ErrorSerializer(serializers.Serializer):
error = serializers.CharField(max_length=100)
class Meta:
fields=(
'error',
)
class EqSerializer(serializers.Serializer):
course = CourseSerializer(many=False)
error = ErrorSerializer(many=False)
api.py
...
for c in serializer.validated_data:
course = models.Course.objects.filter(id=1)#simplifying
if len(course)==0:
error="No Courses Found"
elif len(course)>1:
error="Too many courses"
else:
x = serializers.CourseSerializer(course[0])
e = serializers.ErrorSerializer(data={'error':'none'} )
e.is_valid()
equate = serializers.EqSerializer(data={'course':x.data,'error':e.data})
ferr.append(equate) #ferr is my array of EqSerializer
resp = serializers.EqSerializer(data=ferr,many=True)#problem is here
我如何把它ferr
变成一个serializers.EqSerializer
列表
解决方案
如果有人遇到同样的问题,这里是解决方案,只需创建一个生成 ListSerializer 的字典数组,它应该可以工作
for c in serializer.validated_data:
course = models.Course.objects.filter(id=1)#simplifying
if len(course)==0:
error="No Courses Found"
elif len(course)>1:
error="Too many courses"
else:
x = serializers.CourseSerializer(course[0])
e = serializers.ErrorSerializer(data={'error':'none'} )
e.is_valid()
ferr.append({'course':x.data,'error':e.data})
resp = serializers.EqSerializer(data=ferr,many=True)
推荐阅读
- node.js - 错误:找不到模块 '.../webpack' Vue js
- c++ - QMediaPlayer 无法在 Window 上播放歌曲
- mysql - SQL GROUP_CONCAT 查询帮助
- java - 在 Android 中使用 ACTION_DIAL 可以同时拨打两个特殊符号
- intellij-idea - 如何使用预提交挂钩使用 IntelliJ 格式格式化代码?
- javascript - 需要在另一个 div 悬停时向 div 添加类
- vue.js - 如何解决在 shopware 中通过 Lightweight 方法创建的 2 个插件之间的冲突?
- c# - 如何创建服务绑定 HttpClient 的实例?
- javascript - 未捕获的 TypeError 无法读取属性“0”
- powerdns - PDNS 将未知条目转发到另一个名称服务器