[英]How to filter Django ManyToManyField based upon exact queryset?
我们如何根据ManyToManyField
中的确切值过滤 django model 实例。 考虑以下示例:假设我们有两个模型:
class Author(models.Model):
name=models.CharField(max_length=200)
class Book(models.Model):
authors=models.ManyToManyField(Author)
我想过滤所有只有给定 id 的给定作者的书。 如果我希望按作者 ID 1, 2, 3
过滤查询集。 我试过这样做:
Book.objects.filter(authors__id__in=[1,2,3])
这不起作用,因为它为我提供了具有这些 id 的作者以及其他作者的书籍列表。 如何过滤书籍,使作者仅在这些 ID 中
您可以在ManyToManyField related_name
字段中传递一个related_name,然后在过滤器查询中使用它。
Class Book(models.Model):
authors = models.ManyToManyField(Author, related_name='authors')
并尝试运行查询:
Book.objects.filter(authors__id__in=[1,2,3])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.