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

标签 django django-rest-framework django-serializer

我是 Django 的新手,找不到解决我的问题的方法。

问题是在使用不同 View 的情况下强制特定的序列化程序包含不同数量的字段。我想在我的第一个 View 中使用“id”字段,在第二个 View 中使用“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

这样生活就简单多了。

关于django-rest-framework 序列化器在多个 View 中的不同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063644/

相关文章:

Django Angular Facebook 身份验证

python - 请求方法值错误的 Django Rest Framework : `get_serializer_class` called several times,

python - 了解 Django 中的 View 评估

python - 如何在 Django 中使用 PIL 保存图像时给出路径

django - Nginx为Django应用提供静态文件

python - Django Rest Framework Serializer Model 带参数的自定义方法

Django Rest 框架 : Writable nested serializers with Generic Foreign Key

Django Rest Framework 使用 SerializerMethodField 返回相对路径而不是完整 url

Django Rest Framework PUT请求对唯一模型字段

python - Django 和体育类(class)设计应用程序