django - 在 ModelForm 中显示计算的字段值
问题描述
我的 Django 项目中有一个对象性能模型。
class Performance(models.Model):
performance_id = models.AutoField(primary_key=True)
name = models.CharField(_('Nom'), max_length=64)
code = models.CharField(_('Code'), max_length=16, db_index=True, default='')
type = models.InterField(...)
value = models.CharField(...)
在 Admin 界面中,我有一个专门的PerformanceInlineAdmin
和一个PerformanceInlineForm
类。
在Performance
对象中,如果值字段以“$”开头,则该字段包含某种Reverse Polish Notation
表达式(例如"100 450 +"
...)。在这种情况下,显示的值应该是计算出来的表达式,而不是字段明文值。
但是我仍然没有找到可靠的解决方案。甚至不确定它应该在Form
对象中处理。
欢迎任何建议。
Z。
解决方案
您可以在InlineAdmin
类中定义一个返回只读字段的方法:
class PerformanceInlineAdmin(admin.TabularInline):
model = Performance
fields = ['name', 'code', 'type', 'calculated_value']
readonly_fields = ['calculated_value', ]
def calculated_value(self, instance):
if instance.value.startswith("$"):
return polish_calc(instance.value.strip('$')
else:
return instance.value
calculated_value.short_description = "Calculated value"
请注意,如果您自己定义一个calculated_value()
方法Performance
,您可以跳过内联管理类中的整个方法,只需在readonly_fields
.
推荐阅读
- java - 以 JSONP 响应的简单 Java HTTP Server 应用程序
- python - 如何在 Kivy 中更改 TextInput 所选文本的前景颜色
- python - 与似然法一起使用的 Scipy 差分进化
- python-3.x - Pytest DynamoDB client.describe_continuous_backups 返回错误
- r - R如何将函数作为字符串传递给另一个函数
- javascript - Display Api in ReactJs
- sql-server - 有没有办法以 0.0000001 秒的完全精度将当前时间作为 datetime2(7) 获取?
- r - 如何在 Else 部分打印 if else 语句?
- r - 在 R 中:按列中的每个唯一 ID 运行回归,每个唯一 ID 有多个观察值
- node.js - 如何在 Cloudinary 上上传两个名称不同的图像(不是数组)?