I have models with many to many relationships like this:
class Contact(models.Model): name = models.TextField() address = models.TextField() class M
As SQL returns all matching records, Django dutifully maps them to objects. What you're looking for is the .distinct() queryset method that makes SQL collapse all duplicate rows into one.
.distinct()