2012-06-02 1 views
1

내가 별도의 서브 클래스과 같이 블록의 각 유형의베이스 블록 모델 블록 시스템을 구축하고있다 : 나는 할 수 있도록하고 싶습니다 무엇Django에서 여러 모델을 반환하는 쿼리 세트를 얻으려면 어떻게해야합니까?

class BlockType(models.Model): 
    ''' Defines properties of a block ''' 
    title = models.CharField(max_length=50) 
    class_name = models.CharField(max_length=50) 

class Block(models.Model): 
    ''' Implementation of the block ''' 
    product = models.ForeignKey('product.Product', related_name='blocks') 
    block_type = models.ForeignKey('product.BlockType', related_name='used_blocks') 
    order = models.IntegerField(default=0) 

class ImageBlock(Block): 
    ''' An image block ''' 
    image = models.CharField(max_length=255) 

class TextBlock(Block): 
    ''' A text block ''' 
    text = models.TextField() 

입니다 :

b = product.blocks.all() 

그리고이 대신에 Block 객체 목록이 있습니다. 관련 하위 클래스 목록입니다.

제품에 TextBlock과 2 개의 ImageBlock이있는 경우. 위의 경우 TextBlock 객체와 3 개의 Block 객체가 아닌 2 개의 ImageBlock이 반환됩니다.

답변

1

나는 당신이 그렇게 할 수 없다는 것에 대해 사과합니다. 그러나 질문은 : 왜 그렇게하고 싶습니까?

계속하기 전에 또 다른 질문이 있습니다. 이러한 "블록"을 모델링 한 방식대로 데이터베이스에 3 가지 테이블 (4 가지 "BlockType"테이블)이 제공된다는 것을 알고 계셨습니까? 너가 원하는게 그거야?

나는이 모델로 무엇을 할 것인지, 어떻게 사용할지 모르므로 많은 도움을 줄 수있는 링크를 제공 할 것입니다. 원하는 경우이 모델로 수행 할 작업에 대한 정보와 두 가지 모델로 단일 쿼리 세트를 갖고 싶은 이유에 대한 정보를 얻을 수 있습니다.

이 당신을 도울 수 : https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models

나이 : https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes

는 희망이 도움이! 아니요, 문제를 이해하고 답변을 제공하는 데 도움이되는 정보를 더 추가하십시오.

관련 문제