【问题标题】:How to serialize a model using different field names?如何使用不同的字段名称序列化模型?
【发布时间】:2015-08-27 23:23:39
【问题描述】:

我有一个带有 id 和标签的模型:

class Widget(models.Model):
    label = models.TextField()

我想序列化标签和id,所以我有一个这样的序列化器:

class WidgetSerializer(serializers.ModelSerializer):

    class Meta:
        model = Widget
        fields = ('id', 'label')

这给了我一个像{"id": 61, "label": "Super Widget"} 这样的序列化。但是,我需要在不更改模型的情况下为序列化提供不同的标签(例如{"widget_id": 61, "widget_name": "Super Widget"}),因为它在不同的地方使用。有没有办法告诉序列化器使用不同的标签序列化一个字段?

【问题讨论】:

    标签: serialization django-rest-framework


    【解决方案1】:

    我认为你不能用“serializers.ModelSerializer”来实现,但你可以用“serializers.Serializer”来实现。

    试试这样的:

    class CommentSerializer(serializers.Serializer):
        id = serializers.IntegerField(label="widget_id")
        label = serializers.CharField(label="widget_name")
    

    欲了解更多信息:http://www.django-rest-framework.org/api-guide/fields/#serializer-fields 还有一些例子:http://hackersome.com/p/jezdez/django-serializers

    【讨论】:

    • 我已经尝试过了,但它在 Django 3.0.7 中不起作用。我得到This field is required
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多