If I have some models like so:

from django.db import models

class X(models.Model):
    y = models.ForeignKey(Y)
    ... other fields ...

class Y(models.Model):
    ... some fields ...



... and I do a query like so:

X.objects.all().values('y')

... I get back a list of dictionaries that contain Y ID integers.

If I do a query like so:

X.objects.all().values('y_id')

...I get back a similar result, except for the keys in the dictionaries.

My proposal is to differentiate between those two calls and in the former 
case, instead of returning the same results as the latter case, return Y 
model objects.

Not only would this produce results that are more indicative of what the 
query is asking for, but it would extend the ORM in at least one area:
http://stackoverflow.com/questions/30113766/aggregrate-query-with-related-models-not-just-related-id-values

Those kinds of aggregrate queries would be possible.

As far as backwards compatibility is concerned, the old behaviour could 
occur with no key word argument to the values() call, but if a keyword 
argument like so:

X.objects.all().values('y', select_related=True)

...is specified, then my proposed behaviour could be executed.

What do you think?

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/4adaa5a3-f6d3-4189-8bb5-83eb5c4f2648%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to