저는 Order 모델과 order_event 모델이 있습니다. 각 order_event에는 주문할 외래 키가 있습니다. 주문 인스턴스에서 얻을 수 있습니다 : myorder.order_event_set
. 모든 주문 목록을 가져오고 싶지만 마지막 주문 날짜별로 정렬되기를 원합니다. 이 같은 문은 최신 이벤트 날짜별로 정렬 작동합니다django queryset을 관련 모델 하위 집합의 최신 인스턴스로 정렬합니다.
queryset = Order.objects.all().annotate(
latest_event_date=Max('order_event__event_datetime')
).order_by('latest_event_date')
그러나, 내가 정말 필요로하는 이벤트의 부분 집합의 최신 날짜별로 정렬 모든 주문의 목록입니다. 예를 들어 내 이벤트는 "일정", "처리"등으로 분류됩니다. 따라서 모든 일정을 최신 일정 이벤트별로 정렬 할 수 있어야합니다. 이 django 문서 (https://docs.djangoproject.com/en/dev/topics/db/aggregation/#filter-and-exclude)는 필터를 사용하여 최신 일정 이벤트를 얻는 방법을 보여 주지만 일정이없는 주문은 제외합니다 행사.
나는 필터링 된 queryset을 스케줄링 이벤트가없는 순서를 포함하는 queryset과 결합 할 수 있다고 생각했지만이 작업을 수행하는 방법을 잘 모르겠습니다. 나는 파이썬 목록을 사용하여 관련 답변을 보았다하지만
편집 재 (즉 매김과 함께보기 등) 적절한 장고의 검색어가 훨씬 더 유용 할 것이다 : 의견/제안 또한
class Order(models.Model):
desc = models.CharField(max_length=30)
class Order_event(models.Model):
order = models.ForeignKey(Order)
event_datetime = models.DateTimeField(auto_now_add = True)
, 나는 하나 이상의 성명서에서 그렇게하지 않아도된다. 또한 orm 대신 python을 통한 정렬 등은 거대한 데이터 세트로 작업하지 않기 때문에 ok입니다. 가능하다면 언급 한 이유로 SQL에서 멀리 떨어져있는 것을 선호합니다. 별개의 정렬 된 쿼리 세트를 결합하는 것이 유망한 것으로 보이지만, 나는 막혀있다.
관련 모델을 제공하면 이해하기가 더 쉬울 것입니다. – acjay
모델이 필요하지 않습니다. 정확히 무엇을 묻고 있는지 이해합니다. 불행히도 가능할지 모르겠지만 적어도 순수 ORM 코드는 아닙니다. – Greg