DJango 学习(12)—— choices参数

文章讲述了在Django模型中,对于有限枚举可能性的字段如性别,如何使用choices参数进行存储和获取对应的描述信息。即使存储了不在choices元组中的数字,系统仍能存储但无法获取对应的描述。示例代码展示了创建和查询带有choices字段的模型实例。
摘要由CSDN通过智能技术生成

问题描述

用户表
性别
学历
工作经验
是否结婚
是否生子
。。。
针对可列举完全的可能性字段,我们该如何存储

只要某个字段的可能性是可以列举完全的,我们通常采用 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

运行结果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值