class Publication(models.Model):
title = models.CharField(max_length=30)
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
p1 = Publication.objects.create(title='The Python Journal')
p2 = Publication.objects.create(title='Science News')
p3 = Publication.objects.create(title='Science Weekly')
我想过滤在p1
和p3
上发布的文章。它们可能会也可能不会在其他发布物上发布,但它们必须在p1
和p3
上发布。
我试过:
Article.objects.filter(Q(publications=p1) & Q(publications=p3))
但它返回空查询集,这不是真
3条答案
按热度按时间wgmfuz8q1#
我遇到过类似的问题,有些用户在结束时有一个免费角色,也有一个付费角色,所以我需要选择在多对多字段中有两个特定角色的用户。
我做了这样的事情,像一个魅力
h79rfbju2#
如果您将多个调用链接到
filter()
,它们的行为应该类似于与AND
连接:7kjnsjlb3#
在多对多和多对一测试中有许多
FOO__in=...
样式筛选器的示例。以下是针对您的特定问题的语法:icontains
用于i
表示不区分大小写,contains
表示单词包含这些字母,可能有更少或更多的字母。在使用queryset时,到处都使用双下划线(__)语法。