假设我有一个模型名称 Book。我有两个 View (列表和详细信息)
模型.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
如果我要在我的 ListView 和详细信息 View 中使用这个序列化程序。我可以设置退货字段吗?示例: ListView 仅返回姓名列表,详细 View 将返回姓名、作者、发布日期字段。
或者我是否必须在两个类的 Class Meta 中创建新的序列化程序和插入字段?
最佳答案
如果您需要不同的列表和详细 View 表示,您应该为每个 View 定义单独的序列化程序。例如...
class DetailBookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('name', 'author', 'publishdate')
class ListBookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('name',)
然后确保设置
serializer_class
每个 View 上的适当属性。
关于django rest 框架在 View 中返回选定的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916349/