2

次のシナリオに適した設計を構築しようとしています

  1. WidgetTypeクラス_
  2. タイプからのWidgetクラスWidgetType
  3. Widgetクラスには、指定されたによって定義されるいくつかの設定がありますWidgetType
  4. 新しい を追加するとき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)

これで問題は解決しますが、最適ではないと感じています。管理フォームをカスタマイズせずに、管理フォームで許可された値のセットのみに対して設定のキーを制限することはできないため

そして、提案はありがたいです。

4

1 に答える 1

0

FK from Settingtoを使用する代わりに、 on toを使用し、limit_choices_to kwarg を使用して選択肢を適切な設定に制限するWidgetことができます。ManyToManyFieldWidgetSetting

于 2012-05-18T14:31:10.490 に答える