让我们考虑以下模型:
class Item(models.Model):
pass
class TagType(models.Model):
tag_name = models.CharField()
tag_value_type = models.CharField() #or any other serializable field
#and a class, which is ManyToMany for Item x TagType
class Tag(models.Model):
item = models.ForeignKey(Item)
tag_type = models.ForeignKey(TagType)
value = models.CharField()
在django admin中,我想对项目管理员内的标签进行内联编辑。然而, 我想对Tag类的值字段进行变量控制。例如,让我们 考虑到我有两种标签类型:COLOR,它有一个select / option小部件, 和一个SIZE标签,它有一个DecimalField小部件。
如何在更改tag_type字段值时更改值字段的窗口小部件?这是 甚至可能?这难以实现吗?这意味着,在一个Item实例中,Tag instancef的值字段可能有不同的小部件。
答案 0 :(得分:0)
您可以覆盖内联模型使用的表单类的窗口小部件,您可以在其中检查tag_type,然后告诉值字段您要使用哪个窗口小部件作为值。
但是,这对于创建新的标记记录会有问题......
当您编辑现有记录时,您将拥有tag_type的值来确定要使用的窗口小部件,但新记录还没有值 - 您将显示哪个窗口小部件?
我认为你最好的办法是分两个步骤。一个创建TagType,一个创建/编辑标签。