Issue
I have this query on my Django project 1.10.1 on Python 3:
Event.objects.filter(Q(subject=topic.id) | Q(object=topic.id) | Q(place=topic.id))
How can I prevent to get two identical Event
records?
Solution
Use the distinct operator:
Event.objects.filter(Q(subject=topic.id) | Q(object=topic.id) | Q(place=topic.id)).distinct()
From the documentation:
By default, a QuerySet will not eliminate duplicate rows. In practice, this is rarely a problem, because simple queries such as Blog.objects.all() don’t introduce the possibility of duplicate result rows. However, if your query spans multiple tables, it’s possible to get duplicate results when a QuerySet is evaluated. That’s when you’d use distinct().
Make special note of their "However" clause before implementing this unless you expect to actually see duplicate results.
Answered By - enderland
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.