choices参数(数据库字段设计常见)
choices参数(数据库字段设计常见)
当数据可以被列举完,能够供用户选择的时候,能够考虑用choices参数,好比性别,成绩,学历,婚否等等
#models.py
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=32)
age = models.IntegerField()
# 性别
gender_choices = (
(1, '男'),
(2, '女'),
(3, '其他'),
)
gender = models.IntegerField(choices=gender_choices)
"""
该gender字段存的还是数字,但是如果存的数字在上面元组列举的范围之内,
那么就可以获取到数字对应的真正内容
1 gender如果字段存的数字不在上述元组列举的范围内容
2 如果在,获取对应的中文信息
"""
score_choices = (
('A', '优秀'),
('B', '良好'),
('C', '及格'),
('D', '不合格'),
)
# 保证字段类型跟列举出来的元组的第一个数据类型一致即可
score = models.CharField(max_length=32, choices=score_choices, null=True)
#tests.py
from django.test import TestCase
# Create your tests here.
import os
import sys
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day08.settings')
import django
django.setup()
from app01 import models
#存
# models.User.objects.create(score='A', username='zhao', age=19, gender=1)
# models.User.objects.create(score='B', username='xiaoyu', age=18, gender=2)
# models.User.objects.create(score='C', username='张三', age=22, gender=3)
"""存的时候没有列举出来的数字也能存"""
# models.User.objects.create(score='D', username='tony', age=50, gender=4)
# 取
user_obj = models.User.objects.filter(pk=1).first()
print(user_obj.gender)
# 只要是choices参数字段,如果想要获取对应信息,固定写法,get_字段名_display()
print(user_obj.get_gender_display())
print(user_obj.get_score_display())
user_obj2 = models.User.objects.filter(pk=4).first()
# 如果没有对应关系,那么字段是什么就展示什么
print(user_obj2.score)
print(user_obj2.get_gender_display())
print(user_obj2.get_score_display())
if __name__ == '__main__':
main()
本文来自博客园,作者:ExpiredSaury,转载请注明原文链接:https://www.cnblogs.com/saury/p/16976294.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!