更新对象值仅用于查看

时间:2018-10-09 10:01:14

标签: django python-3.x

所以我有一系列具有作用的对象。每个角色都有下划线表示空格。现在我知道,在大多数情况下,最好的方法是简单地将数据库中的值更改为正确的格式,但是我需要它具有空格。

因此,值看起来像这样:

role: this_is_my_role

我需要它看起来像这样:

role: this is my role

但仅出于我的观点。我已经尝试了以下方法,但是它不起作用。

def view_info(request):
    device = Device.objects
    for item in device:
        item.role = item.role.replace('_', ' ')

    return render(request, 'table_view.html', {'device': device})

请注意,我不想要更改数据库中的实际值。我只想在渲染模板之前更改该值。

1 个答案:

答案 0 :(得分:2)

这不是正确的方法。您有一种格式的数据,并且想要以另一种格式显示。您可以使用自定义模板过滤器在模板本身中执行此操作,也可以在模型上提供一个属性,以输出转换后的数据。第二个可能是最简单的:

<html>
    <head>
        <style>
            .name3{
                border: 1px solid black;
                height: 53px;
                width: 93px;
                }

            .name{
                  border: 0.5px solid black;
                  height: 10px;
                  width: 92px;
                  float: left;
                }

            .name1{
                  border: 0.5px solid black;
                  height: 41px;
                  width: 30px;
                  float: left;
                  clear: left;
                }

            #name2one{
                height: 20px;
                width: 30px;
                border: 0.5px solid black;
                float: left;
                clear: none;
            }


        </style>
    </head>
    <body>
        <div class="name3">
            <div class="name"></div>
            <div class="name1"></div>
            <div id="name2one"></div>
            <div id="name2one"></div>
            <div id="name2one"></div>
            <div id="name2one"></div>
        </div>
    </body>
</html>

现在,您只需将查询集传递给模板,然后执行class Device(models.Model): ... @property def role_output(self): return self.role.replace('_', ' ') 即可获取转换后的值。