2012-03-26 84 views
0

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

我不确定最好的方式去用它最少没有。的SQL查询。 我是否应该创建一个新模型来保存博客标记集的信息,然后让博客模型与这个新模型建立一个m2m关系?

回答

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的查询集是懒惰的并且可以组合,这将导致一个SQL查询。