No, его невозможно (в настоящее время) без переопределения процесса сериализации.
Почему это невозможно?
Это происходит потому, что альтернативное имя, которое вы хотите использовать для created_on
содержит пробельные и его не представляется возможным определить поле в вашем сериализатору имея пробельные в нем. Кроме того, в настоящее время нет возможности предоставлять альтернативное имя для поля, которое будет использоваться в процессе сериализации.
Возможное решение:
Вы можете переопределить метод to_representation()
вашего сериализатором и там добавить Created On
ключ, имеющий значение, равное значению created_on
ключа. Затем все сериализованные объекты будут содержать ключ 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')
Возможный дубликат http://stackoverflow.com/questions/22958058/how-to-change-field-name-in-django-rest-framework – solarissmoke
Этот вопрос несколько отличается. Имя поля будет по-прежнему иметь меньшие буквы и содержать символы подчеркивания, если я последую этому подходу – Johan
нет, это не будет. Вы можете определить свое альтернативное имя как угодно. Но если вы захотите, вы также можете переопределить объект Response, прежде чем возвращать его в 'perform_create' –