django - 如何 JSON 序列化包含文件的对象?
问题描述
我想从我的 DRF 后端检索Story
相关联的信息。包含数据和文件,并以列表形式出现。这意味着单个可以有多个对象(是 FK in )。story_media
Story_Media
Story
Story_Media
Story
story_media
但是,当我想返回Story_Media
对象列表时,它们似乎不可序列化。所以我的问题是,我如何 JSON 序列化包含文件的对象?
TypeError:Story_Media 类型的对象不是 JSON 可序列化的
class StoryRetrieveSerializer (serializers.ModelSerializer):
story_media = serializers.SerializerMethodField('get_story_media')
class Meta:
model = Story
fields = ('title', 'story_media')
def get_story_media(self, story):
return Story_Media.objects.filter(story=story.id)
解决方案
您需要创建一个序列化程序Story_Media
,将查询集的对象传递给它many=True
并返回序列化程序数据
例如:
def get_story_media(self, story):
qs = Story_Media.objects.filter(story=story.id)
serializer = StoryMediaSerializer(qs, many=True)
return serializer.data
推荐阅读
- javascript - 我想为 C# MVC(客户端技术 javascript、jquery)实现 chrome 管理密码之类的功能
- android - 如何从 Android Q 上的 MediaStore 获取文件的时间戳
- html - Chrome 显示混合内容,但协议实际上匹配
- haskell - 如何在 Haskell 中“打破”列表理解?
- algolia - algolia地方如何返回iso中的国家?
- javascript - 如何使用cheerio 获取itemprop 元素值?
- java - 在无效或丢失的 POM 上失败
- c++ - 如果数据竞争无关紧要,unordered_set 线程安全吗?
- jquery - 如何通过单击按钮使用 jQuery 更改 h1 元素内的文本?
- java - 虽然服务活动被放入清单文件,但发生了这个异常