我在编写 django 数据模型时遇到了麻烦,该模型可以将多个相同类型的对象链接回单个数据条目。这是我目前的模型:
class House(models.Model):
name = models.CharField(max_length=200, unique=True)
color = models.CharField(max_length=200, unique=True)
class Config(models.Model)
name = models.CharField(max_length=200)
nbr_houses = models.PositiveIntegerField()
houses = models.ManyToManyField(House) # this does not work, since I can only map a house once back to Config.
我想做以下(伪代码):
# define a new config and enforce that is should have houses.
$ a = Config(name = 'new_config', nbr_houses = 3)
# associate individual houses with this config
$ a.houses[0] = House(pk= 1)
# associate the same house a second time with this config
$ a.houses[1] = House(pk= 1)
# associate a third house to config.
$ a.houses[2] = House(pk= 2)
我创建了一个新Config
对象new_config
并说这个配置应该有 3 个房子。然后我的模型应该自动检查并强制我将正确数量的房屋链接回Config
. 此外,aHouse
可能会两次引用相同的配置。
Config
我正在考虑用以下方式编写
class Config(models.Model)
name = models.CharField(max_length=200)
nbr_houses = models.PositiveIntegerField()
houses = models.ManyToManyField(House, related_name='house0')
houses1 = models.ManyToManyField(House, related_name='house1')
houses2 = models.ManyToManyField(House, related_name='house2')
houses3 = models.ManyToManyField(House, related_name='house3')
基本上反映可能的最大关联数量,但这有点不灵活。有什么更好的方法来实现这一点?
编辑:想象一下以下用例:您想编写一个可以定义场景复杂性的电脑游戏。每个场景都保存在一个Config
. 每个场景,我可以放置x
很多房子。房屋没有区别,它们只是模板。所以一个场景可以由 10 个红房子、2 个蓝房子和 1 个黄房子组成。因此,对于每个Config
条目,我希望能够关联不同数量的房屋(对象)。也许以后还会有马:)我希望你明白。