2012-06-02 23 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

希望它能帮助!如果不是,请添加更多信息以帮助我们了解您的问题并尝试给您答案

相关问题