У меня есть BaseModel класс:Django rest framework - как сериализовать базовый сериализатор класса класса?
class BaseModel(models.Model):
title = models.CharField(max_length=250, blank=True, null=True)
class Meta:
abstract = True
Тогда у меня есть mutliple классы модели, расширяющие такого класса, например:
class Article(BaseModel):
slug = models.SlugField(max_length=250, default=timezone.now, unique=True)
Моя цель иметь поле в объекте JSON возвращается через мой webservices, чтобы указать тип объекта (чтобы клиентские приложения могли легко сообщать статью из продукта электронной коммерции). Что-то вроде следующего:
{
"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'. – Ivan