我正在构建一个带有基本块模型的块系统,每种类型的块都有一个单独的子类,如下所示:
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 对象。