名称为无效Python标识符的Djangorestframework ModelSerializer字段

2024-06-25 06:52:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这样一个序列化程序:

class CommentSerializer(serializers.Serializer):
    email = serializers.EmailField()
    content = serializers.CharField(max_length=200)

那么serializer.data返回的字典将有键"email""content"

但我需要包含名称不是有效Python标识符的字段:

  • "type"
  • "@context"

有没有惯用的方法


Tags: 程序data字典序列化emailcontentlengthmax
1条回答
网友
1楼 · 发布于 2024-06-25 06:52:31

尝试将to_representation()中的CommentSerializer方法重写为

class CommentSerializer(serializers.Serializer):
    type = serializers.EmailField()
    content = serializers.CharField(max_length=200)

    def to_representation(self, instance):
        data = super().to_representation(instance)
        return_data = {}
        return_data.update({"type": data['type'], "@context": data['content']})
        return return_data



例如:

In [2]: mydata = {"type": "myemail@gmail.com","content": "some content"}

In [3]: comment = CommentSerializer(data=mydata)

In [4]: comment.is_valid(True)
Out[4]: True

In [5]: comment.data
Out[5]: {'type': 'myemail@gmail.com', '@context': 'some content'}

相关问题 更多 >