![](/img/trans.png)
[英]Modifying the output from a serializer in the Django Rest Framework
[英]How to achieve multiple output representations in Django Rest Framework Serializer
我正在尝试将 Django Rest Framework(DRF) 的序列化程序与带有一些 PostgreSQL 字段的 Djnago 模型一起使用。 我知道通过覆盖序列化程序的to_representation()
方法,可以更改传出(序列化)数据格式。 有没有办法在 DRF 序列化器中拥有多个传出表示? 例如,我试图实现的目标是这样的。
from rest_framework import serializers
class MySerializer(serializers.Serializer):
first_name = serializers.CharField(max_length=20)
last_name = serializers.CharField(max_length=20)
def to_representation_1(self, instance):
return {
'first_name': instance.first_name,
'last_name': instance.last_name
}
def to_representation_2(self, instance):
return {
'firstName': instance.first_name,
'lastName': instance.last_name
}
def to_representation_2(self, instance):
return {
'name': f'{instance.first_name} {instance.last_name}',
}
DRF 中有这样的支持吗? 如果不是,那么在记住嵌套序列化程序的可能性的情况下,推荐的方法是什么?
我认为rest_framework.serializers.SerializerMethodField
可以解决您的问题。
您可以像下面那样使用它。
from django.contrib.auth.models import User
from django.utils.timezone import now
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
days_since_joined = serializers.SerializerMethodField()
class Meta:
model = User
def get_days_since_joined(self, obj):
return (now() - obj.date_joined).days
见: https : //www.django-rest-framework.org/api-guide/fields/#serializermethodfield
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.