Django数据库Choice字段显示异常:所有用户性别均显示为女性如何修复
问题原因及修复方案
1. Choice字段定义错误
Django的choices参数要求每个选项的格式为(实际存储到数据库的值, 后台/前台展示的可读名称),你当前的定义把存储值和展示值完全写反了,导致你在后台选「Male」实际存到数据库的是Female,选「Female」存的是Male,直接输出的时候自然全部显示错误。
请将模型里的CHOICES修改为正确的格式,示例:
CHOICES = [ ('Male', '男'), ('Female', '女') ]
如果需要存储中文也可以调整为:
CHOICES = [ ('男', '男'), ('女', '女') ]
2. 模板取值方法错误
你当前在模板中直接写{{ post.gender }},输出的是数据库中存储的原始值,如果需要输出Choice对应的可读展示名称,需要调用Django自动为Choice字段生成的get_字段名_display方法,将模板中的对应代码修改为:
<p class="article-content">{{ post.get_gender_display }}</p>
额外注意
修改代码后如果之前已经录入过数据,旧数据是按照错误的规则存储的,需要手动修正数据库中的旧性别数据,否则旧用户的性别显示还是会异常。
内容的提问来源于stack exchange,提问作者luka
相关产品推荐
相关产品推荐

