在模型中,我有一个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
答案 0 :(得分:0)
我认为您将不得不覆盖模板并提供一些JavaScript。它是相当可扩展的,不会太“ hacky”(即您不必覆盖整个管理模板):
我知道的所有其他选项都会影响服务器端的情况。