用于管理内联字段的变量小部件



让我们考虑以下模型:

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,我想有内联编辑标签内的项目admin。然而,我想有标签类的值字段的变量控制。例如,让我们考虑到我有两个标签类型:color,它将有一个选择/选项小部件;和一个SIZE标签,它将有一个DecimalField小部件。

如何在tag_type字段值更改时更改value字段的小部件?这是甚至可能吗?这很难实现吗?这意味着,在一个Item实例中,Tag实例的值字段可能有不同的小部件。

您可以为内联模型使用的表单类重写小部件,在这里您可以检查tag_type,然后告诉值字段您希望使用哪个小部件作为值。

然而,这将是一个问题,创建新的标签记录…

当您编辑现有记录时,您将有tag_type的值来确定要使用的小部件,但是新记录还没有值—您将显示哪个小部件?

我认为你最好的办法是采取两步法。一个创建TagType,另一个创建/编辑标签。

相关内容

最新更新