Tuesday, January 10, 2012

Using DISTINCT on related model fields

I'm trying to express this query using the Django ORM:

SELECT DISTINCT test_b.name FROM test_a LEFT JOIN test_b ON
test_a.b_id = test_b.id

using Django (with models 'A' and 'B') all I seem to be able to get is

SELECT DISTINCT test_a.name, test_a.id FROM a INNER JOIN test_b ON
test_a.b_id = test_b.id

via the query:

A.objects.all().distinct('b__name')

I've tried various changes, including select_related() to try and
convince it to follow the relation, but no matter what I do it ends up
using the fields from the A model in the DISTINCT clause rather than
B. I assume that part of the problem is that the query I want to
express does not return an A object, but I can't think of how to use
the B model to phrase it in the ORM
(B.objects.all.distinct('name').filter( "has at least one A
model" ) ? )

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate