我有一个与标签对象有m2m关系的博客模型。我希望每个博客都有多组标签,如[tagset1,tagset2 ......]。当用户提交一些标签集[usertagset1,usertagset2 .....]来检索博客时,我必须返回所有博客 usertagset是博客标记集的子集。
我不确定以最低限度不行的最佳方式。的SQL查询。 我应该创建一个包含博客标签集信息的新模型,然后让博客模型与这个新模型建立m2m关系吗?
答案 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查询。