django order_by 값이 데이터베이스에 저장되지 않았습니다.
class Rating(models.Model):
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
@property
def total(self):
return self.upvotes - self.downvotes
class Rating(models.Model):
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
@property
def total(self):
return self.upvotes - self.downvotes
total
속성으로 주문해야하는 등급 그룹이 있습니다. 보시다시피 가 아닌 값이 데이터베이스에 저장됩니다. rating_set.order_by("total")
가 작동하지 않습니다.
파이썬의 sorted
함수를 key=lambda r: r.total
과 함께 등급 목록에 사용할 수 있습니다. 하지만 이것은 다소 비효율적이며 Django 내에서 더 나은 방법이 존재할 것입니다.
장고는 파생 값에 의한 정렬을 지원합니까? 합계를 데이터베이스에 저장된 값으로 만들어 성능을 향상시킬 수 있습니까?
'.extra()'를 사용하면 쿼리 세트를 렌더링하는 동안 문제가 해결됩니다. 필드는 데이터베이스에서 반환되므로 정렬 할 수 있습니다 (분명히). 나는 그것이 다르게 할 수 있으면 의심한다. – Konstant