试图截断django_table2中的列内容

时间:2015-01-06 00:29:37

标签: python django django-models django-templates django-views

我有一个django表,其列的小数点高达7个点。该列称为错误。任何人都可以帮我截断数据只有两个小数点或者可能是数字的四舍五入吗?

模型:

class Course (models.Model):
    null_value = 0
    department = models.CharField(max_length=200)
    course = models.CharField(max_length=200)
    semester = models.CharField(max_length=200)
    actual = models.FloatField (default=0)
    prediction = models.FloatField(default=0)
    error = models.FloatField(default=0)

class NameTable(tables.Table):
    # actions = tables.Column(orderable=False)
    # selection = tables.CheckBoxColumn(accessors="pk", orderable = False)
    # table = n_object.filter(course=course_selected).order_by('id').all()
    table=tables.Table
    # actual1 = table.values_list('actual')

    error = tables.Column(verbose_name='ERROR (%)')
    class Meta:
        model = Course
        fields = ("semester","actual","prediction","error")
        order_by_field = True

视图中的内容(我将其修改为您需要的内容):

def report_table1(request):
    n_object = Department.objects.all()
    table = n_object.filter(department=department_selected).order_by('id').all()
    t_data = NameTable(table)
    RequestConfig(request).configure(t_data)

    return render(request, 'table.html', {"table_course": t_data})

html文件

{% block content %}
{% load render_table from django_tables2 %}

<div style="text-align: center;">
    <!--<h2>Prediction for all Courses</h2>-->
    <!--<table style="width: 100%;" "text-align:center;">-->

    {% render_table table_course%}
    <!--</table>-->

{% endblock %}

我该怎么办?我更愿意舍入错误列中的数字

2 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案,您可以使用简单的技巧对数据进行舍入。您应该在模型中创建一个属性,为您的错误记录定义一个舍入值。让我们看看代码(它应该可以工作,但我现在无法测试):

型号:

class Course (models.Model):
    null_value = 0
    department = models.CharField(max_length=200)
    course = models.CharField(max_length=200)
    semester = models.CharField(max_length=200)
    actual = models.FloatField (default=0)
    prediction = models.FloatField(default=0)
    error = models.FloatField(default=0)

    @property
    def roundedError(self):
        return u"%.2f" % (self.error)
        # or you can return like ruddra's answer ;)
        # return round(self.error, 2)

表:

class NameTable(tables.Table):
    ...
    roundedError = tables.Column()

答案 1 :(得分:1)

您可以使用的另一种解决方案:

class NameTable(tables.Table):

     def render_error(self, **kwargs):
        return round(kwargs['value'], 2)
        # or you can return like markdesign's answer :) 
        #return u"%.2f" % (kwargs['value'])  

     class Meta:
        model = Course
        fields = ("semester","actual","prediction","error")
        order_by_field = True