问题描述
用户表
性别
学历
工作经验
是否结婚
是否生子
。。。
针对可列举完全的可能性字段,我们该如何存储
只要某个字段的可能性是可以列举完全的,我们通常采用 choices 参数
gender 字段存的数字不在上述元组上会怎么样
如何获取数字对应的信息
代码实现
# models.py
class choices_user(models.Model):
username = models.CharField(max_length=32)
age = models.IntegerField()
# 性别
gender_choices = (
(1, "男"),
(2, "女"),
(3, "其他")
)
gender = models.IntegerField(choices=gender_choices)
"""
该gender字段存储的还是数字,但如果存的数字在上面的元组里面,
那么可以轻松的获取该数字对应的内容
"""
# tests.py
from django.test import TestCase
# Create your tests here.
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoProject.settings")
import django
django.setup()
from app01 import models
# models.choices_user.objects.create(username="1", age=18, gender=1)
# models.choices_user.objects.create(username="2", age=18, gender=2)
# models.choices_user.objects.create(username="3", age=18, gender=3)
# models.choices_user.objects.create(username="0", age=18, gender=0)
# 存的时候没有列举的字段也能存(范围还是按照字段类型)
# 取
user_obj = models.choices_user.objects.filter(pk=1).first()
# 只要是 choices 参数,如果你想要获取字段对应的信息,固定写法 get_字段名_display()
print(user_obj.get_gender_display())
user_obj = models.choices_user.objects.filter(pk=4).first()
# 如果没有对应关系,字段是什么还是展示什么
print(user_obj.get_gender_display()) # 4