新闻中心

Django Model Choice Fields 显示完整名称教程

2025-10-19
浏览次数:
返回列表

django model choice fields 显示完整名称教程

本文档旨在解决 Django 模型中使用 `CharField` 和 `choices` 属性时,如何在模板中显示选项的完整名称,而不是存储在数据库中的缩写值。通过 `get_FIELD_display()` 方法,可以轻松地在模板中呈现更具可读性的选项名称。

在 Django 开发中,我们经常需要在模型中使用下拉选择框来限制用户输入。为了节省存储空间,通常会使用简短的字符串来表示选项值,而在界面上显示更友好的完整名称。本文将介绍如何利用 Django 提供的 get_FIELD_display() 方法,在模板中轻松地显示这些完整名称。

使用 choices 属性定义选项

首先,在 models.py 文件中,使用 choices 属性定义 CharField 字段的选项。choices 属性接受一个元组列表,其中每个元组包含两个元素:

  • 第一个元素是存储在数据库中的实际值(通常是简短的字符串)。
  • 第二个元素是将在界面上显示的完整名称。

例如:

from django.db import models

class StuData(models.Model):
    id_num = models.IntegerField(primary_key=True)
    entry_date = models.DateTimeField('Date of Entry')
    MALE = 'm'
    FEMALE = 'f'
    OTHER = 'x'
    GENUNK = 'u'
    GENDER_SELECTIONS = [
        (MALE,'Male'),
        (FEMALE,'Female'),
        (OTHER,'Non-Binary'),
        (GENUNK,'Unknown'),
    ]
    gender = models.CharField(max_length=1, choices=GENDER_SELECTIONS)
    ## Build the selections for the race field
    AFR_RACE = 'AA'
    ASI_RACE = 'AS'
    WHI_RACE = 'WH'
    UNK_RACE = 'UN'
    RACE_SELECTIONS = [
        (AFR_RACE, 'African-American'),
        (ASI_RACE, 'Asian/Pacific Islander'),
        (WHI_RACE, 'White'),
        (UNK_RACE, 'Unknown Race'),
    ]
    race = models.CharField(max_length=2, choices=RACE_SELECTIONS)
    ## Build the selections for the ethnicity field
    HSP = 'HIS'
    NHP = 'NHP'
    UNK = 'UNE'
    ETHNICITY_SELECTIONS = [
        (HSP, 'Hispanic Origin'),
        (NHP, 'Not of Hispanic Origin'),
        (UNK, 'Unknown Ethnicity'),
    ]
    ethnicity = models.CharField(max_length=10, choices=ETHNICITY_SELECTIONS)
    stu_count = models.IntegerField(default=1)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        ordering = ["id_num"]

    def __str__(self):
        return str(self.id_num) # 修改为返回id_num字符串

注意事项:

AI Surge Cloud AI Surge Cloud

低代码数据分析平台,帮助企业快速交付深度数据

AI Surge Cloud 87 查看详情 AI Surge Cloud
  • 确保 max_length 属性足够存储最长的完整名称,或者存储数据库中实际的值。
  • choices 属性是可选的,但强烈建议使用它来规范用户输入。
  • __str__ 方法需要返回一个字符串,因此需要将 self.id_num 转换为字符串。

在模板中使用 get_FIELD_display() 方法

Django 提供了一个方便的方法 get_FIELD_display(),可以用来获取 choices 属性中与数据库值对应的完整名称。在模板中,可以通过以下方式使用该方法:

{% for stu in studata_list %}
    <tr>
        <td>{{ stu.id_num }}</td>
        <td>{{ stu.entry_date }}</td>
        <td>{{ stu.get_gender_display }}</td>
        <td>{{ stu.get_race_display }}</td>
        <td>{{ stu.get_ethnicity_display }}</td>
        <td>{{ stu.stu_count }}</td>
    </tr>
{% endfor %}

在上面的代码中,stu.get_gender_display、stu.get_race_display 和 stu.get_ethnicity_display 分别会返回 gender、race 和 ethnicity 字段的完整名称,而不是存储在数据库中的简短值。

总结:

使用 get_FIELD_display() 方法可以轻松地在 Django 模板中显示 choices 属性定义的完整名称,提高用户体验。这种方法简单易用,无需编写额外的代码即可实现。记住,FIELD 应该替换为你模型中实际的字段名称。

以上就是Django Model Choice Fields 显示完整名称教程的详细内容,更多请关注其它相关文章!


# 而在  # 佛山网站推广威鑫hfqjwl下拉  # 江苏网站优化建设  # 网站建设还能挣钱吗  # 产品各种推广营销方案设计  # 网站建设技巧方案模板  # 唐山高端网站建设  # 推广网站怎么加标签  # 保险销售网站建设  # 廊坊网站建设的软件  # 佛山网站建设厂家供应  # 相关文章  # go  # 为你  # 将在  # 第一个  # 而不是  # 如何实现  # 并在  # 数据库中  # 表单  # django  # cad 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制  Composer如何在生产环境安全地执行composer update  如何更改在 Excel 中打开超链接时的默认浏览器  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  PDF文件体积过大处理_PDF压缩技巧详解  Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  抓大鹅解压小游戏 抓大鹅摸鱼解压入口  J*aScript中localStorage数据的获取、清洗与格式化教程  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  J*aScript中在Map循环中检测并处理空数组元素  J*aScript实现动态背景色下的文本与按钮颜色自适应调整  大象笔记网页版入口 印象笔记网页版登录入口  Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达  千牛数据看板网页版_千牛数据看板网页版访问方法  俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航  qq游戏大厅官方下载_qq游戏免费下载安装入口  J*a应用集成GitHub CLI与API认证指南  PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误  顺丰国际快递查询 国际件官方查询入口  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  qq音乐在线播放入口_qq音乐电脑版登录链接  蛙漫移动版在线看 蛙漫手机浏览器直达入口  J*aScript动态修改指定div内所有a标签样式指南  如何使用纯J*aScript判断Input元素是否在特定类容器内  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  在J*aScript中复现SciPy的B样条拟合与求值:关键考量  深入理解Promise链:如何在catch后中断then的执行  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  Steam官网入口直达 Steam注册及登录步骤  顺丰快件物流信息 官方网站查询入口  J*a递归快速排序中静态变量的状态管理与陷阱  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  小米Civi 4录制视频过暗_小米Civi 4亮度优化  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  Golang如何使用net/url解析URL_Golang URL解析与处理方法  微博网页版主页入口 微博官方网站免登录访问  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】 

搜索