django - Django Rest Framework - 过滤数据的问题
问题描述
在我的模型中,我有 Book 和 Author 与 M2M 关系。
models.py
from django.db import models
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
published_date = models.DateField(auto_now_add=False)
categories = models.CharField(max_length=300, null=True, blank=True)
average_rating = models.FloatField(null=True, blank=True)
ratings_count = models.IntegerField(null=True, blank=True)
thumbnail = models.URLField(null=True, blank=True)
def authors(self):
return self.author_set.all()
def __str__(self):
return f'title: {self.title} \n' \
f'date of publication: {self.published_date}'
class Author(models.Model):
name = models.CharField(max_length=200)
books = models.ManyToManyField(Book)
def __str__(self):
return str(self.name)
在我的序列化程序中,我从def authors
models.py 中获取作者
serializers.py
class Meta:
model = Author
fields = ['name']
class BookSerializer(serializers.ModelSerializer):
authors = AuthorSerializer(many=True)
class Meta:
model = Book
fields = [
'authors',
'title',
'published_date',
'categories',
'average_rating',
'ratings_count',
'thumbnail'
]
所以在views.py中我想按作者过滤书籍
views.py
class BooksListAPIView(generics.ListAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
filter_backends = (filters.OrderingFilter, DjangoFilterBackend)
filter_fields = ['published_date', 'authors']
ordering_fields = ['published_date']
但它给了我这个错误
'Meta.fields' must not contain non-model field names: authors
知道如何过滤作者的数据,以便提取给定作者的书籍。我想选择过滤器。提前致谢。
解决方案
推荐阅读
- java - Java spark 通过 S3 API 访问 emc 对象存储
- google-sheets - 谷歌表格;比较 3 列和行中的数据,如果数据相似,则突出显示单元格
- tensorflow - 获取图像分割中单个测试图像的准确性
- sql-server - 以相同格式将 xml 文件导入 SQL Server
- watson-conversation - 如何将 ibm watson 助手聊天机器人部署到我已经托管的网站?
- reactjs - Firebase 在特定范围内加载 lada
- oracle - 使用 GROUP BY 和 HAVING COUNT(*) >1 选择重复和非重复字段
- angular - 为什么我们有组件时还需要服务?
- jquery - 单个数据表上的不同函数和变量
- python - 设置步长极坐标图matplotlib python