我的管理页面中有一个字段,我想用科学记谱法显示。
现在它显示出像这样丑陋的东西。如何将其显示为4.08E + 13?
现在我在模型中使用标准的十进制字段。
非常感谢任何建议。
我在使用Django 1.2。
答案 0 :(得分:3)
您必须使用%e来使用科学记数法
示例:
>>> num = 374.534
>>> print '%e' % num
3.745340e+02
答案 1 :(得分:1)
嗯,这是一个解决方法,因为我无法弄清楚如何在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();
});
然后更新您的admin.py代码类以包含javascript文件:
class MyModel1Admin(admin.ModelAdmin):
class Media:
js = ['/media/decimal_to_sci_not.js']
admin.site.register(MyModel1,MyModel1Admin)