私は、ベースブロックモデルを使用してブロックシステムを構築しています。各タイプのブロックには、次のような個別のサブクラスがあります。
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()
そして、これがブロックオブジェクトのリストである代わりに。関連するサブクラスのリストであること。
したがって、製品にTextBlockと2つのImageBlockがある場合。上記では、3つのBlockオブジェクトではなく、TextBlockオブジェクトと2つのImageBlockが返されます。