首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:过滤相关对象,从结果中删除重复项

Django:过滤相关对象,从结果中删除重复项
EN

Stack Overflow用户
提问于 2009-12-30 20:15:04
回答 2查看 7.2K关注 0票数 12

给定以下模型:

代码语言:javascript
复制
class Blog(models.Model):
    name = models.CharField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    content = models.CharField()

我希望将以下内容传递给模板:

代码语言:javascript
复制
blogs  = Blog.objects.filter(entry__content__contains = 'foo')
result = [(blog, blog.entry_set.filter(content__contains = 'foo'))
          for blog in blogs]
render_to_response('my.tmpl', {'result': result}

但是,"Blog.objects.filter(...)“如果找到多个匹配条目,则多次返回同一博客对象。

如何删除重复项?或者更好的是,我是否错过了一种将匹配列表传递给模板的更简单的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-30 20:17:45

添加.distinct()只会给你带来截然不同的结果。

票数 18
EN

Stack Overflow用户

发布于 2009-12-30 20:26:45

请参阅"distinct()“函数的QuerySet API Docs

返回一个在其SQL查询中使用SELECT DISTINCT的新QuerySet。这消除了查询结果中的重复行。

默认情况下,QuerySet不会消除重复行。在实践中,这很少是问题,因为像Blog.objects.all()这样的简单查询不会引入重复结果行的可能性。但是,如果您的查询跨越多个表,则在计算QuerySet时可能会得到重复的结果。这时您将使用distinct()。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1979896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档