【发布时间】:2018-11-28 13:37:45
【问题描述】:
在一个模型中,我有一个 DecimalField“first_arg”和一个多选 CharField“second_arg”。
我想实现以下目标: 在管理面板中,如果为“second_arg”字段选择了特定选项(例如“B”),则将插入到“first_arg”表单字段的任何值增加 2。它应该只发生在 UI 级别。 正确的做法是什么?
由于它是管理 UI 的一部分,因此修改模型应该是错误的。另一方面,我在文档中找不到任何关于它的信息。我想过在静态文件中简单地使用一些 JS,但这有点 hacky。有没有优雅的方式在 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
【问题讨论】:
-
我不完全确定您的最终目标是什么。您是否尝试更新 UI 以便在 second_arg 更改时更新 first_arg 字段,或者您是否希望实际更新模型的已保存 first_arg 字段?
-
我正在尝试更新 UI,只是我编写的表单字段。编辑以使其更清晰。是的,如果“second_arg”设置为特定值,我正在尝试通过“first_arg”上的常量执行加法。
标签: python django django-models django-forms django-admin