同じタイプの複数のオブジェクトを 1 つのデータ エントリにリンクできる 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
。さらに、House
同じ構成を 2 回参照する場合があります。
私は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
に、異なる数の家 (オブジェクト) を関連付けられるようにしたいと考えています。たぶん後で馬も登場するでしょう:)あなたがアイデアを理解してくれることを願っています.