django-rest-framework序列化器在多个视图中的不同字段
发布时间:2020-12-05 06:31:23  所属栏目:Python  来源:互联网 
            导读:我是Django的新手,无法找到问题的解决方案. 问题是在使用不同视图的情况下强制特定的序列化器包括不同数量的字段.我想在第一个视图中使用’id’字段,在第二个视图中使用’id’和’name’字段. 这是我的model.py class Processing(models.Model): id = models.
                
                
                
            | 
                         我是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 
 生活这种方式简单得多. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
推荐文章
            站长推荐
            
        热点阅读
            