如何改变CharField的显示方式?

2024-05-19 02:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在models.py文件中定义了这样一个模型:

class Tutor(models.Model):
    FirstName = models.CharField(max_length=50)
    LastName = models.CharField(max_length=50)
    Email = models.EmailField(max_length=100)
    PhoneNumber = models.CharField(max_length=10)
    RequestedHours = models.DecimalField(max_digits=3, decimal_places=1)

    def __str__(self):
        return str(self.FirstName + " " + self.LastName)

我想创建一个页面,在一个易于快速阅读的表中显示所有这些信息。我已经设法做到了大部分,但我总是发现10位数的电话号码更难以阅读没有分隔符。当前,显示输出如下所示:

enter image description here

表的代码如下所示:

<div class="table-background">
<table class="table table-striped table-bordered table-hover">
    <thead>
    <tr class="bg-info">
        <th colspan="2">Tutor</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <th>First Name</th>
        <th>Last Name</th>
    </tr>
    <tr>
        <td>{{ tutor.FirstName }}</td>
        <td>{{ tutor.LastName }}</td>
    </tr>
    <tr>
        <th>Email</th>
        <th> Phone Number</th>
    </tr>
    <tr>
        <td>{{ tutor.Email }}</td>
        <td>{{ tutor.PhoneNumber }}</td>
    </tr>
    <tr>
        <th colspan="2">Requested Hours</th>
    </tr>
    <tr>
        <td colspan="2">{{ tutor.RequestedHours }}</td>
    </tr>
    </tbody>
</table>

有没有什么方法可以修改CharFieldPhoneNumber的输出,使其显示为000-000-0000


Tags: selfmodelsemailtablefirstnamelengthtrmax
1条回答
网友
1楼 · 发布于 2024-05-19 02:25:36

您确实应该在视图中格式化它,但在模板方面:

{% with pn=tutor.PhoneNumber|to_list %}
 {{ pn|slice:":3"|join:'' }}-{{ pn|slice:"3:6"|join:'' }}-{{ pn|slice:"6:"|join:''}}
{% endwith %}

您还可以修改您的模型:

class Tutor(models.Model):
    FirstName = models.CharField(max_length=50)
    LastName = models.CharField(max_length=50)
    Email = models.EmailField(max_length=100)
    PhoneNumber = models.CharField(max_length=10)
    RequestedHours = models.DecimalField(max_digits=3, decimal_places=1)

    def __str__(self):
        return str(self.FirstName + " " + self.LastName)

    def get_formatted_phone(self):
        return '{}-{}-{}'.format(self.PhoneNumber[:3],
                                 self.PhoneNumber[3:6],self.PhoneNumber[6:])

然后在模板中:

{{ tutor.get_formatted_phone }}

但这类东西真的属于我们的视野

相关问题 更多 >

    热门问题