首页 > 数据库 >choices参数(数据库字段设计常见)

choices参数(数据库字段设计常见)

时间:2022-12-12 16:00:46浏览次数:53  
标签:models gender 数据库 choices score 参数 user User

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()

标签:models,gender,数据库,choices,score,参数,user,User
From: https://www.cnblogs.com/zaosong/p/16976294.html

相关文章

  • pycharm链接数据库(MySQL)
    pycharm可以充当很多数据库的客户端点击MySQL后,如果是第一次使用pycharm中的MySQL,那么需要点击download下载对应驱动如果提示下载失败的话,可以点击Driver,选择MySQLfo......
  • 《MySQL必知必会》之事务、用户权限、数据库维护和性能
    第二十六章管理事务处理本章介绍什么是事务处理以及如何利用COMMIT和ROLLBACK语句来管理事务处理事务处理并非所有数据库引擎都支持事务处理常用的InnoDB支持事务处......
  • pg参数优化
    连接设置参数名作用使用listen_address指定服务器在哪些TCP/IP地址上监听客户端连接,默认值是localhost,只允许本地连接。*(所有都可以连接)max_connectio......
  • MongoDB的local数据库
    每个mongod实例都有自己的local数据库,用于存储复制过程中使用的数据和其他特定于实例的数据。local数据库对复制不可见:不复制local数据库中的集合。local数据库中的集合:......
  • 数据库运维 | 携程分布式图数据库NebulaGraph运维治理实践
    作者简介:PatrickYu,携程云原生研发专家,关注非关系型分布式数据存储及相关技术。背景随着互联网世界产生的数据越来越多,数据之间的联系越来越复杂层次越来越深,人们希望......
  • 如何保障数据库的稳定性
    介绍稳定性指标RTO与RPO首先讲起稳定性都会提到两个指标RTO与RPO:RTO:恢复所需的时间指标。是反映业务恢复及时性的指标。表示业务从中断到恢复正常所需的时间。RTO值越小......
  • 9、electron子窗口向父窗口传递参数
    主要用到了js里面的 window.opener.postMessage(); 在html页可以直接运行,跟electron没有直接关系1、新建父窗口页“06父窗口接收子窗口.html”1<!DOCTYPEhtml>......
  • 期末复习-数据库
    数据库基础知识一.单选题1-5DBCCD----------6-10DBBCA二.填空题1.文件系统中的数据独立性是指设备独立性2.文件系统的缺陷是:数据冗余、数据不一致和数据联系弱3.......
  • 数据库使用个人经验
    增加:INSERTINFOmylist(id)VALUES('one');//单行增加mylist//当前表名  id//要添加的字段名  one//字段名称  删除:DELETEFROMmylistWHEREid='aaa......
  • 新论文推荐:Auto-Keras:自动搜索深度学习模型的网络架构和超参数
    Auto-Keras是一个开源的自动机器学习库,由美国德州农工大学(TexasA&MUniversity)助理教授胡侠和他的两名博士生:金海峰、QingquanSong提出。Auto-Keras的终极目标是允许所......