django-rest-framework序列化器在多个视图中的不同字段

前端之家收集整理的这篇文章主要介绍了django-rest-framework序列化器在多个视图中的不同字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Django的新手,无法找到问题的解决方案.

问题是在使用不同视图的情况下强制特定的序列化器包括不同数量的字段.我想在第一个视图中使用’id’字段,在第二个视图中使用’id’和’name’字段.

这是我的model.py

class Processing(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField()
    description = models.CharField()

这是我的serializer.py

class ProcessingSerializer(serializers.ModelSerializer):
    id = serializers.ModelField(model_field=Processing()._Meta.get_field('id'))
    class Meta:
        model = Processing
        fields = ('id','name')

欢迎任何帮助.

解决方法

当有人刚开始使用DRF时,一个常见的错误就是尝试让同一个Serializer在阳光下做所有事情.当然,我自己走了那条路.

但是当您使用多个序列化程序执行不同的任务时,生活变得更加简单.您可以使用get_serializer_class方法轻松切换序列化程序.以下是手册中的一个示例,其中显示了如何将一个用于管理员而另一个用于普通用户

def get_serializer_class(self):
    if self.request.user.is_staff:
        return FullAccountSerializer
    return BasicAccountSerializer

有时您希望在列表中使用单个序列化程序,在提供详细信息时使用另一个序列化程序.尝试这样的事情:

def get_serializer_class(self):
    if self.action == 'retrieve':
        return serializers.PlayerDetailSerializer
    else : 
        return serializers.PlayerSerializer

生活这种方式简单得多.

原文链接:https://www.f2er.com/python/185908.html

猜你在找的Python相关文章