【发布时间】:2021-12-03 18:47:41
【问题描述】:
我有两个模型:
class Book(models.Model):
id = models.CharField(verbose_name="unique id", primary_key=True, max_length=256)
title = models.CharField(max_length=256)
published_date = models.CharField(max_length=128, blank=True, null=True)
average_rating = models.IntegerField(blank=True, null=True, default=None)
ratings_count = models.IntegerField(blank=True, null=True, default=None)
thumbnail = models.URLField(verbose_name="thumbnail url", null=True, blank=True, default=None)
class Author(models.Model):
name = models.CharField(null=True, blank=True, max_length=256)
books = models.ManyToManyField(Book, related_name='authors')
我想要实现的是我想通过使用这样的查询参数来过滤 api 查询:
127.0.0.1/books?author='something'
所以我的参数就是那种情况。
我想按作者姓名过滤并检查是否有与该作者有关系的书籍。同样重要的是,一次可能有不止一个参数,如下所示:
?author='something1'&author='something2'
我不知道如何实现这一点。我正在尝试在 DRF 的通用类中使用 get_queryset 函数进行默认过滤,但仍然不知道。
【问题讨论】:
-
您是否实现了更简单的过滤器,例如
/books?title="I, Robot"?如果没有,我建议您先这样做,这样您就可以了解基本过滤,然后在此基础上实现对多对多字段的过滤。
标签: python django url django-rest-framework