투표가 날짜보다 우선 순위가 높은 게시물 목록을 정렬하려고합니다.두 개의 다른 모델의 특성을 사용하여 sorted()를 사용하여 정렬 할 수 있습니까?
나는 내 자신의 응용 프로그램을 UserPost라고하며 투표를 위해 장고 투표 응용 프로그램을 사용하고 있습니다.
class UserPost(models.Model):
user = models.ForeignKey(User)
datetime = models.DateTimeField(auto_now_add=True)
text = models.CharField(max_length=255, blank=True)
is_deleted = models.BooleanField(default=False)
vote = models.ForeignKey(Vote)
는 지금, 나는 표가 아직 우선 순위를 고려하지 않고 정렬 해요 :
posts_list = sorted(posts_list, key=attrgetter('datetime'))
이것에 대해 갈 수있는 가장 좋은 방법은 무엇입니까?
감사합니다. 당신은 또한에 ordering
옵션을보고 할 수 있습니다,
posts_list = sorted(posts_list, key=lambda post: (Vote.objects.get_score(post)['score'], post.datetime))
을 다른 방법 :
음, 검색어입니다. –
빠른 팁 :'sorted' 내장 함수 대신'posts_list.sort (key = attrgetter ('datetime'))'를 사용해야합니다. 'sorted' 함수는리스트의 복사본을 생성합니다.리스트의'sort' 메소드는리스트를 적절한 위치에 정렬하고 약간 더 빠르며 (메모리의 약 절반을 사용합니다). – HardlyKnowEm
@mlefavor : 100 만 개가 넘는 요소가있는 목록을 가지고 있지 않으면 분류가 병목 현상이 될 것입니다. 상황에 가장 잘 보이는 것을 사용하고 나중에 성능에 대해 걱정하십시오. –