I'm trying to sort my QuerySet based on how the objects in the QuerySet are evaluated as Strings.
So my model looks something like this:
class System(models.Model):
operating_system = models.CharField(...)
language = models.CharField(...)
locale = models.CharField(...)
def __unicode__(self):
def __clean(orig, new):
if orig is None or orig == "":
if new is None or new == "":
return ""
else:
return str(new)
else:
if new is None or new == "":
return str(orig)
else:
return str(orig) + " " + str(new)
name = None
for attr in System._meta.fields:
if attr.name != "id":
name = __clean(name, getattr(self, attr.name))
for m2mfield in System._meta.many_to_many:
for object in getattr(self, m2mfield.name).all():
name = __clean(name, object)
if name == "":
return "Undefined"
return name
And, I'd like to be able to make a query something like:
System.objects.filter(...).order_by('__unicode__')
I'm wondering if there's a way to do this without a custom manager.
Thanks!