Django在查询集结果上添加附加字段[重复]
Posted
技术标签:
【中文标题】Django在查询集结果上添加附加字段[重复]【英文标题】:Django adding additional field on query set result [duplicate] 【发布时间】:2021-04-02 18:58:05 【问题描述】:我的 Django 上有这些代码
def get(self, request):
movie = Movie.objects.all().order_by('name').first()
serializer = MovieSerializer(movie)
serializer_data = serializer.data
return Response(serializer_data, status=status.HTTP_200_OK)
它会返回这个数据
"description": "Haunted House Near You",
"id": 1,
"name": "Scary Night",
,
"description": "Netflix and Chill",
"id": 2,
"name": "Movie Night",
,
我想添加自定义字段,像这样称为“别名”
"description": "Haunted House Near You",
"id": 1,
"name": "Scary Night",
"alias": "SN"
,
"description": "Netflix and Chill",
"id": 2,
"name": "Movie Night",
"alias": "MN"
,
我的问题是,如何在 Django 上使用 ORM 添加自定义字段?
【问题讨论】:
如果您在serializer_data
中获取 JSON 格式,则迭代并在其中添加一个字段。
【参考方案1】:
您可以使用 SerializerMethodField 轻松添加基于对象的字段。 默认情况下,它会在您的序列化程序中查找 get_NameOfField 方法。请注意,这是一个只读字段,我相信这是您要查找的内容。
这是一个示例,它给出了对象名称的每个单词的首字母。
# serializers.py
class YourSerializer(serializers.ModelSerializer):
alias = serializers.SerializerMethodField()
class Meta:
# class meta stuff
def get_alias(self, obj):
return "".join([s[0] for s in obj.name.split()])
这比尝试在视图中使用附加查询要高效得多。
希望有所帮助。
【讨论】:
以上是关于Django在查询集结果上添加附加字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章