首页 > 解决方案 > Django 序列化程序获取相关字段

问题描述

我有一个查询集,我想将其转换为 json 并发送给客户端。它只需要定义的一些字段。但是,“发件人”显示为 aid因为它是 a foreignKey

需要什么来返回发件人username?(sender.username没用)。(不使用drf)

messages = Message.objects.all()
messages_json = serializers.serialize("json", messages, fields=('id','sender', 'text', 'timestamp'))

标签: django

解决方案


未经测试,但使用QuerySet.values__关系行走可以让您一键获取数据:

import json

messages = Message.objects.all()
payload_data = messages.values('id', 'sender__username', 'text', 'timestamp')

# tidy up the dict key names, assuming the client needs that doing
for x in payload_data:
    x['sender'] = x['sender__username']
    del x['sender__username']

messages_json = json.dumps(payload_data)

推荐阅读