django - 使用 Django rest 框架时更改字段名称

标签 django django-rest-framework

我正在将 Django rest 框架中的序列化数据提供给我网站上的 Javascript 数据透视表。如果我有一个名为“created_on”的变量,DRF 将使用它作为字段名称。我想在数据透视表中显示的是将转换为“创建于”的标签。

例如,我从 DRF 的输出如下:

[{"created_on": "2016-04-23"}, {"created_on": "2016-05-23"}]

我想要的是:
[{"Created on": "2016-04-23"}, {"Created on": "2016-05-23"}]

如果我不覆盖序列化过程,这可能吗?

最佳答案

不,如果不覆盖序列化过程,这是不可能的(当前)。

为什么不可能?

这是因为 要用于 created_on 的备用名称包含空格 并且无法在序列化程序中定义包含空格的字段。此外,目前没有为序列化过程中使用的字段提供备用名称的功能。

可能的解决方案:

您可以覆盖 to_representation()序列化程序的方法,然后添加一个 Created On键的值等于 created_on 的值 key 。那么所有序列化的对象将包含一个键 Created On .

class MySerializer(serializers.ModelSerializer):

    ...

    def to_representation(self, obj):
        primitive_repr = super(MySerializer, self).to_representation(obj)
        primitive_repr['Created On'] = primitive_repr['created_on']
        return primitive_repr  

如果备用名称不包含任何空格怎么办?

如果备用名称之间不包含任何空格,则您可以使用 SerializerMethodField()source争论。

你可以这样做:
class MySerializer(serializers.ModelSerializer):

    alternate_name = serializers.SerializerMethodField(source='created_on')

    class Meta:
        model = MyModel
        fields = (.., 'alternate_name')

关于django - 使用 Django rest 框架时更改字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496584/

相关文章:

django - 是否需要使用 django Rest 框架

mysql - Django:汇集 MySQL 数据库连接

python - 如何将 http 方法限制为 Django REST api

python - 为什么我不能使用 'django-admin.py makemessages -l cn'

python - 为什么没有创建 sorl 缩略图缓存文件夹?

python - 检查 Django 中是否存在用户名

python - 对其他manytomany字段使用Django用户权限布局

python - pip 不会安装 channels_redis

python - 使用 django rest framework jwt 向 JWT token 主体添加信息

python - Django-Filter 并使用数组进行查询