Django-如何在管理页面字段上显示科学计数法?

Gre*_*reg 5 python django django-models django-forms django-admin

我的管理页面中有一个字段,希望以科学计数法显示。

现在,它显示出这样难看的东西。如何将其显示为4.08E + 13?

在此处输入图片说明

现在,我在模型中使用标准的十进制字段。

任何意见是极大的赞赏。

我使用的是Django 1.2。

Gre*_*reg 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();
});
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)