【发布时间】:2015-12-30 08:45:33
【问题描述】:
我有一个 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)
我的目标是通过我的 Web 服务返回 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
【问题讨论】:
-
看
@property装饰器。
标签: python json django inheritance django-rest-framework