gpt4 book ai didi

python - Django Rest Framework - 如何反序列化模型类名基本序列化器?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:16 26 4
gpt4 key购买 nike

我有一个BaseModel类:

class BaseModel(models.Model):
title = models.CharField(max_length=250, blank=True, null=True)
class Meta:
abstract = True

然后我有多个模型类来扩展此类,例如:

class Article(BaseModel):
slug = models.SlugField(max_length=250, default=timezone.now, unique=True)

我的目标是在通过我的网络服务返回的 JSON 对象中包含一个字段来指示对象的类型(以便客户端应用程序可以轻松区分文章和电子商务产品)。类似于以下内容:

{
"id": 1,
"object_type: "article",
"title": "some article",
"slug": "some-article"
}

我想可能有一个类似于以下内容的 BaseModelSerializer 类:

class BaseModelSerializer(serializers.ModelSerializer):
object_type = self.__class__.__name__ # ??? how to get the name/ label of the child class?

然后我可以有一个ArticleSerializer扩展BaseModelSerializer,如下所示:

class ArticleSerializer(BaseModelSerializer):
class Meta:
model = Article

如果这也可以通过修改 BaseModel 类来实现,我会很高兴。像下面这样的东西吗?

class BaseModel(models.Model):
title = models.CharField(max_length=250, blank=True, null=True)
object_type = self.__class__.__name__ # ??? how to get the name/ label of the child class?
class Meta:
abstract = True

最佳答案

使用SerializerMethodField .

class BaseModelSerializer(serializers.ModelSerializer):
object_type = serializers.SerializerMethodField()

def get_object_type(obj):
return obj.__class__.__name__.lower()


class ArticleSerializer(BaseModelSerializer):
class Meta:
model = Article
fields = ('object_type',)

关于python - Django Rest Framework - 如何反序列化模型类名基本序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902103/

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