次のシナリオに適した設計を構築しようとしています
WidgetType
クラス_- タイプからの
Widget
クラスWidgetType
- 各
Widget
クラスには、指定されたによって定義されるいくつかの設定がありますWidgetType
- 新しい を追加するとき
Widget
、許可された のみを選択できるようにしたいSetting
。
これは私が持ってきたモデルです:
class Widget(models.Model):
title = models.CharField(max_length=200)
widgettype = models.ForeignKey('WidgetType')
class WidgetType(models.Model):
name = models.CharField(max_length=200)
class WidgetSettingOption(models.Model):
widgettype = models.ForeignKey('WidgetType')
key = models.CharField(max_length=200)
description = models.CharField(max_length=2000)
class Setting(models.Model):
widget = models.ForeignKey('Widget')
key = models.ForeignKey('WidgetSettingOption')
value = models.CharField(max_length=200)
これで問題は解決しますが、最適ではないと感じています。管理フォームをカスタマイズせずに、管理フォームで許可された値のセットのみに対して設定のキーを制限することはできないため
そして、提案はありがたいです。