Gre*_*reg 5 python django django-models django-forms django-admin
我的管理页面中有一个字段,希望以科学计数法显示。
现在,它显示出这样难看的东西。如何将其显示为4.08E + 13?
现在,我在模型中使用标准的十进制字段。
任何意见是极大的赞赏。
我使用的是Django 1.2。
好吧,这是一个解决方法,因为我不知道如何在 Django Python 代码中执行此操作。我让管理页面运行一些自定义 JavaScript 以在页面加载后进行转换。
细节:
创建名为“decimal_to_sci_not.js”的 javascript 文件并将其放置在您的媒体目录中:
/*
Finds and converts decimal fields > N into scientific notation.
*/
THRESHOLD = 100000;
PRECISION = 3;
function convert(val) {
// ex. 100000 -> 1.00e+5
return parseFloat(val).toPrecision(PRECISION);
}
function convert_input_fields() {
var f_inputs = django.jQuery('input');
f_inputs.each(function (index, domEl) {
var jEl = django.jQuery(this);
var old_val = parseFloat(jEl.val());
if (old_val >= THRESHOLD) {
jEl.val(convert(old_val));
}
});
}
function convert_table_cells() {
//Look through all td elements and replace the first n.n number found inside
//if greater than or equal to THRESHOLD
var cells = django.jQuery('td');
var re_num = /\d+\.\d+/m; //match any numbers w decimal
cells.each(function (index, domEl) {
var jEl = django.jQuery(this);
var old_val_str = jEl.html().match(re_num);
var old_val = parseFloat(old_val_str);
if (old_val >= THRESHOLD) {
jEl.html(jEl.html().replace(old_val_str,convert(old_val)));
}
});
}
django.jQuery(document).ready( function () {
convert_input_fields();
convert_table_cells();
});
Run Code Online (Sandbox Code Playgroud)
然后更新您的 admin.py 代码类以包含 javascript 文件:
class MyModel1Admin(admin.ModelAdmin):
class Media:
js = ['/media/decimal_to_sci_not.js']
admin.site.register(MyModel1,MyModel1Admin)
Run Code Online (Sandbox Code Playgroud)