我正在尝试为以下场景构建正确的设计
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)
虽然这解决了我的问题,但我觉得这不是最佳选择。由于我无法仅限制管理表单中允许的值集的设置密钥,因此无需自定义管理表单
建议将不胜感激。
答案 0 :(得分:0)
取代Setting
到Widget
的FK,您可以在ManyToManyField
到Widget
上Setting
,并使用limit_choices_to } kwarg将选择限制在适当的设置。