2012-06-02 20 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個ImageBlocks。以上將返回一個TextBlock對象和2個ImageBlocks而不是3個Block對象。

回答

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

希望它能幫助!如果不是,請添加更多信息以幫助我們瞭解您的問題並嘗試給您答案

相關問題