【问题标题】:Further group objects in a many to many relation在多对多关系中进一步分组对象
【发布时间】:2012-03-26 20:33:56
【问题描述】:
我有一个与标签对象具有 m2m 关系的博客模型。我希望每个博客都有多组标签,例如 [tagset1,tagset2......]。当用户提交一些标签集 [usertagset1,usertagset2.....] 来检索博客时,我必须返回所有博客
usertagset 是博客标签集的子集。
我不确定以最少数量解决此问题的最佳方法。的 sql 查询。
我是否应该创建一个包含博客标签集信息的新模型,然后让博客模型与这个新模型建立 m2m 关系?
【问题讨论】:
标签:
django
django-models
django-queryset
【解决方案1】:
你可以尝试逐个过滤掉标签:
user_tags = [tag1, tag2, ... tagn]
blogs = Blogs.objects.all()
for tag in user_tags:
blogs = blogs.filter(tags=tag) # assuming 'tags' is your M2M field name
每个 filter() 都会缩小搜索范围,直到只剩下具有所有指定标签的博客。由于 Django 的 QuerySet 是惰性的并且可以组合,这将导致单个 SQL 查询。