3 가지 모델에는 다른 날짜 / 시간 필드가 있습니다.
class ModelA(models.Model):
# some fields here
date = models.DateField()
class ModelB(models.Model):
# some fields here
date = models.DateField()
class ModelC(models.Model):
# some fields here
date = models.DateField()
날짜 필드 (클래스에 관계없이)를 사용하여 50 개의 마지막 개체를 얻고 싶습니다. 지금은 작동하지만 보시다시피 매우 부적절한 방식으로 수행하고 있습니다.
all_a = ModelA.objects.all()
all_b = ModelB.objects.all()
all_c = ModelC.objects.all()
last_50_events = sorted(
chain(all_a, all_b, all_c),
key=attrgetter('date'),
reverse=True)[:50]
효율적인 방법으로 수행하는 방법 (즉, 쓸모없는 데이터를로드하지 않고)?
쉬운 솔루션-내가 추천하는-각 유형의 50 개 개체로드, 정렬, 처음 50 개 가져 오기 (3 배 더로드)
현재 스키마로는 ORM에서 "적절한 솔루션"을 얻을 수 없습니다. 아마도 가장 쉬운 방법은 전체 모델에 대한 날짜 및 일반 관계가있는 새 모델을 추가하는 것입니다.
이론적으로는 통합 및 원시 쿼리를 사용하여 마술을 할 수도 있지만 이와 같은 모든 작업은 사소한 수동 처리로 더럽습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다