我正在将 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/