6

假设我有一个模型名称 Book。我有两个视图(列表和详细信息)

模型.py

class Book(models.Model):
    name = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publishdate = models.DateTimeField()

序列化程序.py

class BookSerializer(serializers.ModelSerializer):

    class Meta:
        model = Book

如果我要在我的列表视图和详细视图中使用这个序列化程序。我可以设置返回字段吗?示例:列表视图仅返回名称列表,详细视图将返回名称、作者、发布日期字段。或者我是否必须在两个类的 Class Meta 中创建新的序列化程序并插入字段?

4

1 回答 1

7

如果您需要列表和详细视图的不同表示形式,您应该为每个视图定义单独的序列化程序。例如...

class DetailBookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ('name', 'author', 'publishdate')

class ListBookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ('name',)

然后确保serializer_class在每个视图上设置适当的属性。

于 2013-04-10T10:48:19.857 回答