给定以下模型:
class Blog(models.Model):
name = models.CharField()
class Entry(models.Model):
blog = models.ForeignKey(Blog)
content = models.CharField()我希望将以下内容传递给模板:
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(...)“如果找到多个匹配条目,则多次返回同一博客对象。
如何删除重复项?或者更好的是,我是否错过了一种将匹配列表传递给模板的更简单的方法?
发布于 2009-12-30 20:17:45
添加.distinct()只会给你带来截然不同的结果。
发布于 2009-12-30 20:26:45
请参阅"distinct()“函数的QuerySet API Docs:
返回一个在其SQL查询中使用SELECT DISTINCT的新QuerySet。这消除了查询结果中的重复行。
默认情况下,QuerySet不会消除重复行。在实践中,这很少是问题,因为像Blog.objects.all()这样的简单查询不会引入重复结果行的可能性。但是,如果您的查询跨越多个表,则在计算QuerySet时可能会得到重复的结果。这时您将使用distinct()。
https://stackoverflow.com/questions/1979896
复制相似问题