簡體   English   中英

如何根據確切的查詢集過濾 Django ManyToManyField?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM