【问题标题】:How do I specify database model in a serpy serializer?如何在 serpy 序列化程序中指定数据库模型?
【发布时间】:2016-09-16 02:08:31
【问题描述】:

我有两个模型,

class Publication(models.Model):
    title = models.CharField(max_length=30)


class Article(models.Model):
    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)

我正在尝试学习使用 serpy 进行序列化。

我写了两个序列化器,但我不知道如何提及模型。我写了一个django rest框架序列化器,如下,

class PublicationSerializer(serializers.ModelSerializer):

    class Meta:
        model = Publication
        fields = 'title',

class ArticleSerializer(serializers.ModelSerializer):
    publications = PublicationSerializer(many=True)

    class Meta:
        model = Article
        fields = '__all__'

这是我为与 Serpy 一起使用而编写的序列化程序。

class PublicationSerializer(serpy.Serializer):

    title = serpy.Field()

class ArticleSerializer(serpy.Serializer):
    headline = serpy.Field()
    publications = PublicationSerializer()

我不知道该在哪里提到模型,

我希望能够序列化一个查询集,比如说

Article.objects.all()

必须进行哪些更改才能将其与 Django Rest Framework 一起使用?

【问题讨论】:

    标签: python django serialization django-rest-framework django-serializer


    【解决方案1】:

    您显然不需要为serpy 序列化程序指定关联模型。将您的 Django 对象传递给适当的 serpy 序列化程序类就足够了。还是不行?

    articles = Article.objects.all()
    
    articles_serialized = ArticleSerializer(articles, many=True).data
    

    【讨论】:

    • 换句话说,使用 Serpy,您必须手动将模型中所需的字段添加到序列化程序类中,而不是使用 DRF 从模型定义中自动添加序列化程序字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多