Tuesday, January 26, 2010

Re: How to lazy-sort a list of translation strings alphabetically

On 25 Jan., 20:36, Matthias Kestenholz <matthias.kestenh...@gmail.com>
wrote:
> Alternatively, you could write your own Field or
> Widget which implements the sorting -- it's not that hard.

I was just starting to write "It doesn't work" when I found this here:
http://www.djangosnippets.org/snippets/1767/

class LazyChoiceField(forms.ChoiceField):
def __init__(self, *args, **kwargs):
# remove choices from kwargs
self._lazy_choices = kwargs.pop('choices',())
super(LazyChoiceField,self).__init__(*args, **kwargs)

def __deepcopy__(self, memo):
result = super(LazyChoiceField,self).__deepcopy__(memo)
result.choices = self._lazy_choices
result.choices.sort(lambda x, y: cmp(x[1], y[1]))
return result

Just needed to add the line with the sorting to the snippet. Well,
actually I don't really understand why it works and when django calls
the __deepcopy__, but supposedly it is called after the translation
takes place, so this is an effective solution. Could be generalized
further (not hardcode the sorting function), but for now it does the
job.

--
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