And*_*unt 4 django django-models
假设我有一个id列表:c = ['1','2','3']
class Topic(Model):
categories=ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud)
如何从c过滤具有精确且仅具有id的类别的主题?
您需要调用列表中的.filter(categories=category_id)每个元素c.
c = [1, 2, 3]
topics = reduce(lambda qs, pk: qs.filter(categories=pk), c, Topic.objects.all())
Run Code Online (Sandbox Code Playgroud)
然后,如果您想要排除包含其他类别的主题(例如主题[1,2,3,4]),那么您需要.annotate和.filter总计数.
c = [1, 2, 3]
initial_qs = Topic.objects.annotate(cnt=models.Count('categories')).filter(cnt=len(c))
topics = reduce(lambda qs, pk: qs.filter(categories=pk), c, initial_qs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |