On Wed, 2008-07-09 at 05:51 -0700, [EMAIL PROTECTED] wrote: [...] > I tried using the order_by with two sets of dates: > > .order_by('-related_name_to_model__date_field_in_B', '- > date_field_in_A') > > However, this just produces a queryset that is partitioned into two > separate date orderings. > > What I'm asking is if there is anyway to "intermix" the dates so that > ALL of the Model As appear in date order, even if they do not have a > related Model B date?
No, because ordering is done at the SQL level and Django converts that ordering tuple to a sequence of ordering columns. What is happening here (why the sets appear to be partitioned) is because all rows that don't have a date field in B have a NULL in that column after the outer join. All those NULLs sort together (whether they sort first or last is database dependent) and then model A date field is used as a secondary ordering to distinguish any rows that have sorted together for the "date in B" columns (e.g. the NULLs). If you were writing the raw SQL, you could do this with a coalesce statement in the ordering clause. Right now that kind of stuff isn't possible to insert directly via Django, although you could do it by subclassing Query (and then QuerySet) if you were really keen. Adding a way to have "smart" ordering objects (you pass in an object and Django will call the as_sql() method on it, for example) will probably happen at some point, but it's not high priority at the moment. Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---