kni*_*nap 10 django filter duplicates
鉴于以下型号:
class Blog(models.Model):
name = models.CharField()
class Entry(models.Model):
blog = models.ForeignKey(Blog)
content = models.CharField()
Run Code Online (Sandbox Code Playgroud)
我希望将以下内容传递给模板:
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}
Run Code Online (Sandbox Code Playgroud)
但是,如果找到多个匹配条目,"Blog.objects.filter(...)"会多次返回相同的Blog对象.
你如何删除重复项?或者更好的是,我错过了将匹配列表传递给模板的更简单方法吗?
Ign*_*ams 18
添加.distinct()将只给您不同的结果.
有关"distinct()"函数,请参阅QuerySet API文档:
返回在其SQL查询中使用SELECT DISTINCT的新QuerySet.这样可以消除查询结果中的重复行.
默认情况下,QuerySet不会消除重复的行.实际上,这很少是一个问题,因为像Blog.objects.all()这样的简单查询不会引入重复结果行的可能性.但是,如果您的查询跨越多个表,则在评估QuerySet时可能会获得重复的结果.那就是你使用distinct()的时候.
| 归档时间: |
|
| 查看次数: |
6077 次 |
| 最近记录: |