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

您可以使用on to代替 FK from Settingto ,并使用limit_choices_to kwarg 将选择限制为适当的设置。WidgetManyToManyFieldWidgetSetting

于 2012-05-18T14:31:10.490 回答