如何在Django Admin中关联字段?

时间:2018-11-28 13:37:46

标签: python django django-models django-forms django-admin

在模型中,我有一个DecimalField“ first_arg”和一个多选CharField“ second_arg”。

我想实现以下目标: 在管理面板中,如果为“ second_arg”字段选择了特定选项(例如“ B”),则将插入到“ first_arg”表单字段的任何值增加2。这仅在UI级别发生。 正确的做法是什么?

由于它是管理界面的一部分,因此修改模型应该是错误的。另一方面,我在文档中找不到任何有关它的信息。我考虑过只在静态文件中使用一些JS,但这有点黑。在Django Admin中,有没有一种优雅的方式来做这些事情?

型号代码:

a = "a"
b = "b"
etc = "etc"
RELEVANT_OPTIONS = (
    (a, "A"),
    (b, "B"),
    (etc, "etc")
)


class MyModel(models.Model):

    first_arg = models.DecimalField(
        max_digits=4,
        decimal_places=2,
        blank=True, null=True
    )
    second_arg = models.CharField(
        choices=constants.RELEVANT_OPTIONS,
        max_length=20,
        blank=True, null=True
    )

    class Meta:
        abstract = True

1 个答案:

答案 0 :(得分:0)

我认为您将不得不覆盖模板并提供一些JavaScript。它是相当可扩展的,不会太“ hacky”(即您不必覆盖整个管理模板):

我知道的所有其他选项都会影响服务器端的情况。