On Wed, Jan 28, 2009 at 4:44 PM, Malcolm Tredinnick <
malc...@pointy-stick.com> wrote:

>
> On Wed, 2009-01-28 at 06:49 -0800, Aaron Lee wrote:
> >  I tried doing that but it didn't work, the order of names within the
> > PersonAdmin still shows the Name according to pk order.
>
> Firstly, realise that your question doesn't have a "correct" answer.
> Ordering by multi-valued fields always have that problem. For example:
>
>        Person1
>                - Name.name = 'a'
>                - Name.name = 'c'
>        Person2
>                - Name.name = 'b'
>

What I want to achieve is when I edit Person1 in the admin interface, I want
to order the Name.name i.e. 'a', 'c'
instead of according to 'a','c''s primary key in Name. So I am a bit
confused why Person2 comes into the picture.
Think about a person can have multiple names e.g. screenname, nickname,
username etc ...

I believe that's a legitimate use of ManyToManyField?


>
> Now, depending upon which "name" value is chosen for Person1, it might
> sort ahead of or behind Person2. However, things are even worse than
> that. What will happen, in fact, is that the SQL results will include
> Person1 twice -- once for name='a' and once for name='c', since any
> ordering columns are part of the select result.
>
> However, if you're certain that the group of things you are selecting
> don't have multiple entries in the related many-to-many table (in which
> case, why are you using a ManyToManyField and not a ForeignKey?), you
> can order by any related field you like:
>
>        class Person(models.Model):
>           ...
>           class Meta:
>              ordering = ['name__name']
>
> This is documented in the order_by() documentation for querysets (since
> Meta.ordering is just an order_by() application):
>
> http://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by-fields
>
> 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 
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