簡體   English   中英

Django Rest Framework-如何序列化模型類名稱庫

[英]Django rest framework - how to serialise the model class name base serialiser?

我有一個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

使用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',)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM