gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:09:37 33 4
gpt4 key购买 nike

我是 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com