进一步的组对象有多对多的关系

时间:2012-03-26 20:33:57

标签: django django-models django-queryset

我有一个与标签对象有m2m关系的博客模型。我希望每个博客都有多组标签,如[tagset1,tagset2 ......]。当用户提交一些标签集[usertagset1,usertagset2 .....]来检索博客时,我必须返回所有博客 usertagset是博客标记集的子集。

我不确定以最低限度不行的最佳方式。的SQL查询。 我应该创建一个包含博客标签集信息的新模型,然后让博客模型与这个新模型建立m2m关系吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试逐个过滤掉标签:

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

每个过滤器()都会缩小搜索范围,直到只保留包含所有指定标记的博客。由于Django的QuerySets是惰性的并且可以组合,因此这将导致单个SQL查询。