我有以下模型:
class Benchmark(models.Model):
name = models.CharField(max_length=50)
location = models.CharField(max_length=150)
platforms = models.ManyToManyField('Platform')
class Platform(models.Model):
name = models.CharField(max_length=50)
class KnobItem(models.Model):
value = models.CharField(max_length=150)
knob = models.ForeignKey('Knob')
class BenchmarkKnobItem(KnobItem):
benchmark = models.ForeignKey('Benchmark')
class PlatformKnobItem(KnobItem):
platform = models.ForeignKey('Platform')
class Knob(models.Model):
name = models.CharField(max_length=150)
在管理员中,我有BenchmarkKnobItem
和PlatformKnobItem
作为内联。添加新基准旋钮的下拉菜单具有同时列出可用平台旋钮的不良效果。然后,我formfield_for_foreignkey
将可用旋钮的方法用于它们各自的基准或平台模型。
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "knob":
kwargs["queryset"] = BenchmarkKnobItem.objects.all()
return super(BenchmarkKnobItemInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
不幸的是,这不允许我创建一个新的内联对象。管理员说“选择一个有效的选择。该选择不是可用的选择之一。” 我假设这是因为该对象尚未保存。
是否有人对如何允许我创建新旋钮同时仍将可用选择限制为各自类型有任何想法?