首页 > 其他分享 >11、 Django-模型基础-models-ORM框架-管理器对象

11、 Django-模型基础-models-ORM框架-管理器对象

时间:2024-07-01 22:43:42浏览次数:16  
标签:11 管理器 name models db default blank True

 

# 概述
django根据属性的类型确定以下信息
当前选择的数据库支持字段的类型
渲染管理表单时使用的默认htm1控件
在管理站点最低限度的验证
django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后则django不会再生成默认的主键列
#属性命名限制
·遵循标识符规则
由于django的查询方式,不允许使用连续的下划线
定义属性时,需要字段类型,字段类型被定义在diango.db.models.fields目录下,为了方便使用被导入到django.db.models中
#使用方式
导入from diango.db import models
通过models.Field创建字段类型的对象,赋值给属性

 

#逻辑删除和物理删除
对于重要数据都做逻辑删除(界面删除数据库里还在),不做物理删除(数据库中删除)
实现方法是定义isdelete属性,类型为BooleanField默认值为False(逻辑删除)
is delete =models.BooleanField(default=False)

 

 

常用参数字段

#常用字段选项(通过字段选项,可以实现对字段的约束)
1、null=True
    -- 数据库中字段是否可以为空
2、blank=True
    -- django的 Admin 中添加数据时是否可允许空值
    -- 一般null=True & blank=True 搭配着用,出现null=True就用上blank=True
3、primary key = True
    -- 主键,对AutoField设置主键后,就会代替原来的自增 id列
 
4、auto_now和auto_now_add
    -- auto_now: 自动创建---无论添加或修改,都是当前操作的时间
    -- auto_now_add 自动创建---永远是创建时的时间

5、choices (后台admin下拉菜单)
    -- USER_TYPE_LIST =(
        (1, '超级用户'),
        (2, '普通用户'),
        )
        user_type = models.IntegerField(choiceS=USER TYPE LIST,
                                        default=1,
                                        verbose_name='用户类型')
        
6、max_length          #最大长度
7、default             #默认值
8、verbose_name        #Admin(后台显示的名称)中字段的显示名称
9、name|db_column      #数据库中的字段名称
10、unique=True        #不允许重复
11、db_index = True    #数据库索引,例如:如果你想通过name查询的更快的话,给他设置为索引即可
12、editable=True      # 在Admin里是否可编辑,不可编辑则不显示
13、设置表名
    class Meta:
        db_table =person 
  

 

 

案例

models.py

from django.db import models

# Create your models here.


class UserModel(models.Model):
    #创建主键、uid会成为主键、原来的id不会创建
    uid = models.AutoField(auto_created=True, primary_key=True)

    #CharField:字符串类型, unique:唯一值, db_index:索引
    name = models.CharField(max_length=30, unique=True, db_index=True)

    #IntegerField:整数类型, default为默认值
    age = models.IntegerField(default=18)

    #布尔类型
    sex = models.BooleanField(default=True)

    #TextField 长字符串、大文本
    #null=True 表示可以为空
    #blank=True 在Admin管理界面可以为空
    info = models.TextField(null=True, blank=True)

    #浮点型 小数
    salary = models.FloatField(default=10000.3456)

    #models.DecimalField 十进制小数
    #max_digits=4  数字的最大长度、包含小数位
    #decimal_places=2   保留小数点后2位
    money = models.DecimalField(max_digits=4, decimal_places=2, default=10.34)

    #日期
    birthday = models.DateField(default='1996-06-11')
    birthday2 = models.DateTimeField(auto_now=True)     #每次修改后都会自动修改该时间位最新的修改时间
    birthday3 = models.DateTimeField(auto_now_add=True) #第一次添加数据时候的时间、以后都不会变


    #上传文件或者图片 字段
    #upload_to='static/uploads'   :文件图片上传的路径
    #blank=True 在admin管理界面可以为空
    icon = models.FileField(null=True, blank=True, upload_to='static/uploads')
    #ImageField() : 只能上传图片
    #使用ImageFiled 要安装 Pillow 模块
    icon2 = models.ImageField(null=True, blank=True, upload_to='static/uploads')



    #其它约束
    chioces = ((1, '青铜'), (2, '大师'), (3, '王者'))
    #choices 是下拉菜单      verbose_name: 是字段名
    user_type = models.IntegerField(choices=chioces, default=1, name='utype', verbose_name='用户类型')

    #editable=False  为不可编辑、不会在admin界面显示这个字段、在数据库中还是会存在
    user_type2 = models.IntegerField(choices=chioces, default=1, editable=False, name='utype2', verbose_name='用户类型2')

    class Meta:
        db_table = '修改的表名(定义表名)'

#数据迁移
    #python .\manage.py makemigrations
    #python .\manage.py migrate

    #注意:如果前面已经做过了数据迁移了、后续再修改数据(如添加字段的时候)、需要再重新迁移数据、
    # 注意:后新增的数据要添加默认值、或者如果不添加默认值时 执行迁移makemigrations的时候选择 第一个选项、手动输入默认值

 

管理器对象

标签:11,管理器,name,models,db,default,blank,True
From: https://www.cnblogs.com/littlecc/p/18116086

相关文章

  • VMware安装Win11环境
    准备Win11的iso镜像下载链接:https://www.microsoft.com/zh-cn/software-download/windows11/?open_in_browser=true配置步骤步骤一——创建虚拟机1、点击创建新虚拟机2、使用典型模式3、选择镜像位置4、选择虚拟机存放位置5、输入密码,此密码可以随便写6、选择单个......
  • 0基础学C++ | 第11天 | 基础知识 | 引用
    目录引用的基本使用 引用的注意事项 引用做函数参数 引用做函数的返回值引用的本质引用的基本使用作用:引用就是给变量起别名,它不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。我的理解就是......
  • C++11中如何创建线程
    在C++11中,创建线程变得非常简单和标准化,因为C++11引入了线程库(<thread>)。这个库提供了std::thread类,使得创建和管理线程变得更加直接和方便。以下是如何在C++11中创建线程的基本步骤:包含线程库:首先,你需要包含<thread>头文件,以便使用std::thread。定义线程将要执行的函数或可......
  • 前端开发 | Node 版本管理器选择
    一、Nvmnvm是一款Node.js版本管理工具,允许用户通过命令行快速安装、切换和管理不同的Node.js版本。nvm只适用于macOS和Linux用户的项目,如果是Windows用户,可以使用nvm-windows、nodist或nvs替换。安装方式macOS下载方式:brewinstallnvm#orsh命令#方......
  • win11添加开机自启动
    方法1win+R打开运行,输入shell:startup会打开一个文件夹将想要启动的程序快捷方式放进文件夹在设置里面搜索“启动”,可以看到开机启动项,确认已经打开。以上,针对不用管理员权限启动的程序,有效。方法2下面看需要管理员权限的:按Win+R,输入regedit,打开注册表编辑......
  • 不用虚拟机在Windows上安装Linux子系统(win11)
    打开终端输入以下命令查看是否支持安装systeminfo最底下是4个yes代表支持 在开始菜单输入如下搜索 打开拉到最底下,勾选这两个选项 按照提示重启电脑 打开终端输入以下命令会自动安装最新的Ubuntu发行版wsl--install可以通过如下命令查看其他版本wsl--list......
  • springboot校企对接实习管理系统 毕业设计-附源码11959
    摘 要校企合作实习是一种重要的实践教学模式,但是在实际的推行过程中,存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展,应用web技术开发B/s模式的实习管理系统,根据用户需......
  • k8s-11-Kubernetes原理
    Kubernetes原理控制平面负责控制并使得整个集群正常运行。Etcd分布式持久化存储API服务器调度器控制器管理器工作节点负责容器的运行任务kubeletkube-proxy容器运行时(Docker、rkt等)附加组件DNS服务器仪表盘Ingress控制器Heapster(容器集群监控)容器......
  • 百分浏览器Cent Browser v5.1.1130.129 正式版
    软件简介百分浏览器是基于Chrome内核开发的,因此在界面设计上与Chrome非常相似。它不仅继承了Chrome的稳定性和流畅性,还增加了一些Chrome没有的功能。例如,百分浏览器提供了更好的内存管理方法,可以减少内存占用,这对于经常使用大量标签页的用户来说是一个重要的优势。此外,它还......
  • 社交媒体品牌:如何通过11个步骤提升您的战略
    您是否正在努力在社交媒体上留下自己的印记?您是否觉得您的品牌在无尽的视频和表情包中迷失了方向?在本文中,我们将为您提供11个技巧,帮助您制定社交媒体品牌战略并脱颖而出。但首先,让我们探讨什么是社交媒体品牌,以及为什么它很重要。目录隐藏1什么是社交媒体品牌? 2为什么品......