Django项目中如何将多个CharField字段拼接为一句话显示
实现步骤
第一步:修改Userpost模型
首先移除模型中的title字段,建议同时新增一个只读属性自动拼接三个字段作为标题,后续模板、接口等处调用会更方便:
from django.db import models from django.contrib.auth.models import User from django.utils import timezone class Userpost(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) # 直接删除原来的title字段定义行 Year = models.CharField(max_length = 4) Mileage = models.CharField(max_length = 8) Make = models.CharField(max_length = 50) Model = models.CharField(max_length = 50) Price = models.DecimalField(max_digits=15, decimal_places=2) email = models.EmailField() date_published = models.DateField(default = timezone.now) # 新增拼接标题的属性 @property def display_title(self): return f"{self.Year} {self.Make} {self.Model}"
第二步:同步数据库结构
修改完模型后需要执行迁移更新数据库,在项目根目录依次执行两条命令:
python manage.py makemigrationspython manage.py migrate
提示:如果原有数据中
title字段有需要保留的内容,请提前做好数据备份再执行迁移操作
第三步:修改模板渲染逻辑
把模板中原先渲染{{car.title}}的代码替换为新的标题即可,有两种可选写法:
- 调用我们在模型里加的属性,写法更简洁:
<h6><strong>{{car.display_title}}</strong></h6>
- 不想修改模型的话也可以直接在模板里拼接字段,效果完全一致:
<h6><strong>{{car.Year}} {{car.Make}} {{car.Model}}</strong></h6>
内容的提问来源于stack exchange,提问作者Gabriel Trezza
相关产品推荐
相关产品推荐

