I've recreated this behavior with the following examples.   (using
1.0)

#models.py
class Building(models.Model):
  name = models.CharField(max_length=10)
  floors = models.IntegerField()

class Unit(models.Model):
  unit_number = models.IntegerField()
  bedrooms = models.IntegerField()
  building = models.ForeignKey(Building)

#filter_test.py
b1 = Building(name="Bld 1",floors=10)
b1.save()
u = Unit(unit_number=1,bedrooms=1,building=b1)
u.save()
u = Unit(unit_number=2,bedrooms=2,building=b1)
u.save()
u = Unit(unit_number=3,bedrooms=2,building=b1)
u.save()


b2 = Building(name="Bld 2",floors=20)
b2.save()
u = Unit(unit_number=1,bedrooms=1,building=b2)
u.save()
u = Unit(unit_number=2,bedrooms=2,building=b2)
u.save()
u = Unit(unit_number=3,bedrooms=1,building=b2)
u.save()

b3 = Building(name="Bld 3",floors=30)
b3.save()
u = Unit(unit_number=1,bedrooms=1,building=b3)
u.save()
u = Unit(unit_number=2,bedrooms=2,building=b3)
u.save()
u = Unit(unit_number=3,bedrooms=1,building=b3)
u.save()

buildings = Building.objects.filter(unit__bedrooms=1)
for bld in buildings:
  print bld.name

######OUTPUT
Bld 1
Bld 2
Bld 2
Bld 3
Bld 3

--------------------------------
So its returning multiple duplicate Building instances.

Is there a way to make the query so it only returns 1 Building
instance for each match (rather than the dupes)  So ideally it would
have just returned.  Bld 1, Bld 2 and Bld 3 because they all happen to
have units with 1 bedroom.  It looks like the ORM is returning 1
Building instance for each Unit that has 1 bedrooms.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to