QuerySet의 객체가 String으로 평가되는 방식에 따라 QuerySet을 정렬하려고합니다. 방법이 있는지 궁금 해요Django QuerySet order_by string evaluation
System.objects.filter(...).order_by('__unicode__')
: 나는 같은 쿼리 뭔가를 할 수 있도록하고 싶습니다,
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
을 그리고 :
그래서 내 모델은 다음과 같이 보입니다 맞춤 관리자없이이 작업을 수행 할 수 있습니다.
감사합니다.
* 사용자 정의 관리자로도 * 할 수 없습니다. –
해커가 아닌 문자열 값인 비정규 화 된 필드를 저장하는 것이 좋습니까? 귀하의 시스템 모델에 다른 필드를 던져서 아마도 save()를 재정 의하여 필요한 것으로 업데이트 한 다음이 다른 필드로 주문하면됩니다 ... – Henry
@Henry는 비정규 필드와 필드의 차이점을 자세히 설명 할 수 있습니까? 나는 현재 사용하고 있습니다 (또는 포인터를주세요)? 감사합니다. 그건 분명히 효과가있을 수 있습니다. 공간이 약간 낭비되는 느낌이 들지만? –