2017-03-16 3 views
0

고객의 주문 카테고리를 저장하기위한 여러 모델 (테이블)이 있습니다.Django 여러 모델 (테이블)로 페이지 매기기

class BookOrder(models.Model): 
    user = models.ForeignKey(User) 
    order_details = models.CharField(max_length=255) 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

class ShoeOrder(models.Model): 
    user = models.ForeignKey(User) 
    order_details = models.CharField(max_length=255) 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

class MobileOrder(models.Model): 
    user = models.ForeignKey(User) 
    order_details = models.CharField(max_length=255) 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

이제 우리는 고객에게 created_at을 기반으로 한 주문 목록을 보여 주어야합니다. 그러나 페이지 매김되어야합니다. 누구나 여러 모델을 사용하여 장고 페이지 매김을 사용하는 방법을 제안 할 수 있습니까?

+0

내 대답이 도움이 되었습니까? 수락하고 upvote하십시오. – ilse2005

답변

1

당신은 chain 귀하의 검색어 세트에이 같은 작업을 수행 할 수 있습니다

from itertools import chain 

book_orders = BookOrder.objects.all() 
shoe_orders = ShoeOrder.objects.all()  
mobile_orders = MobileOrder.objects.all() 
orders = list(
      sorted(
       chain(book_orders, shoe_orders, mobile_orders), 
       key=lambda objects: objects.created_at 
      )) 
paginator = Paginator(orders, 5) 

하지만 더 좋은 방법은 모델을 리팩토링과 Multi-Table-Inheritance를 사용하는 것입니다 생각합니다. 기본 클래스가 Order이고이 클래스의 페이지 매김을 할 수 있습니다.

class Order(models.Model): 
    user = models.ForeignKey(User) 
    order_details = models.CharField(max_length=255) 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

class BookOrder(Orders): 
    book = models.CharField(max_length=255) 
    ... 
+0

created_at 필드가 (created, created_at, created_on)와 다른 이름이면 어떻게 될까요? – itsvks

관련 문제