热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

day18DjangoORM字段参数介绍

一、前言之前我们讲了Djngao的ORM的字段的类型,分为字符串型,数字型,时间型,二进制型等等,今天我们来讲

一、前言

  之前我们讲了Djngao的ORM的字段的类型,分为 字符串型,数字型,时间型,二进制型等等,今天我们来讲讲django的orm的字段的参数介绍。

二、整体的字段参数列表

null 数据库中字段是否可以为空db_column 数据库中字段的列名db_tablespacedefault 数据库中字段的默认值primary_key 数据库中字段是否为主键db_index 数据库中字段是否可以建立索引unique 数据库中字段是否可以建立唯一索引unique_for_date 数据库中字段【日期】部分是否可以建立唯一索引unique_for_month 数据库中字段【月】部分是否可以建立唯一索引unique_for_year 数据库中字段【年】部分是否可以建立唯一索引auto_now_add 更新时,自动更新为当前时间,一般用于create_timeauto_now 创建时,自动生成时间,用于update_timeverbose_name Admin中显示的字段名称blank Admin中是否允许用户输入为空editable Admin中是否可以编辑help_text Admin中该字段的提示信息choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)error_messages 自定义错误信息(字典类型),从而定制想要显示的错误信息;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date如:{'null': "不能为空.", 'invalid': '格式错误'}validators 自定义错误验证(列表类型),从而定制想要的验证规则from django.core.validators import RegexValidatorfrom django.core.validators import EmailValidator,URLValidator,DecimalValidator,\MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator如:test = models.CharField(max_length=32,error_messages={'c1': '优先错信息1','c2': '优先错信息2','c3': '优先错信息3',},validators=[RegexValidator(regex='root_\d+', message='错误了', code='c1'),RegexValidator(regex='root_112233\d+', message='又错误了', code='c2'),EmailValidator(message='又错误了', code='c3'), ])

三、参数字段的详细介绍

前提:在modles.py里面的数据库操作之后,必须在终端依次执行如下命令:

python manage.py makemigrations #生成init.py的文件
python manage.py migrate #把init.py的文件在数据库生成表结构

3.1、null

说明:db是否可以为空

class UserInfo(models.Model):username = models.CharField(max_length=32,null=True) #表示在db中数据可以为空

3.2、default

说明:默认值

class UserInfo(models.Model):username = models.CharField(max_length=32,default="zhangqigao") #字段生成的默认值为"zhangqigao"password = models.CharField(max_length=60)

3.3、primary_key

说明:主键

class UserGroup(models.Model):uid = models.AutoField(primary_key=True) #设置主键groupname = models.CharField(max_length=32)

3.4、db_column

说明:设置列名

class UserInfo(models.Model):username = models.CharField(max_length=32,db_column="user_name") #把列名设置为user_namepassword = models.CharField(max_length=60)

效果如图:

3.5、db_index

说明:设置普通索引

class UserInfo(models.Model):username = models.CharField(max_length=32,db_index=True) #为这个字段设置一个普通索引password = models.CharField(max_length=60)

3.6、unique

说明:设置唯一索引

class UserInfo(models.Model):username = models.CharField(max_length=32,unique=True) #设置唯一索引password = models.CharField(max_length=60)

3.7、 unique_for_date

说明:只对时间做索引

class UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=60)data_time = models.DateTimeField(max_length=10,unique_for_date=True)#只对前面的时间做索引 201611010301012做索引

3.8、 unique_for_month

说明:只对月份做索引

class UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=60)data_time = models.DateTimeField(max_length=10,unique_for_month=True)#只对月份做索引

3.9、unique_for_year

说明:只对年份做索引

class UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=60)data_time = models.DateTimeField(max_length=10,unique_for_year=True)#只对年份做索引

3.10、auto_now

说明:创建时自动生成,这个用于update_time,更新时间,更新当前表时,会自动创建一个时间。这个你创建的时候不用添加,django自动帮你创建更新时间。

class UserGroup(models.Model):uid = models.AutoField(primary_key=True)groupname = models.CharField(max_length=32)ctime = models.DateTimeField(auto_now_add=True,null=True)utime = models.DateTimeField(auto_now=True,null=True)#也不需要自己手动添加,django自动帮你创建

  django admin显示:

数据库显示:

注意了:如果你用orm的语法,传统语法,这个uptime是不会更新的,只有另外一种方式才会更新:

#uptime不会更新的写法
obj = UserGroup.objects.filter(id=1).update(groupname="qigao")#会更新的写法
obj = UserGroup.objects.filter(id=1).first()
obj.groupname = "CE0"
obj.save()

3.11、auto_now_add

说明:更新时自动更新为当前时间,这个一般用于create_time,用于创建时间,因为是当前增加的嘛。这个你创建的时候不用添加,django自动帮你创建当前时间。

class UserGroup(models.Model):uid = models.AutoField(primary_key=True)groupname = models.CharField(max_length=32)ctime = models.DateTimeField(auto_now_add=True,null=True) #不需要自己添加,django会自动帮你添加

 django admin显示:

数据库显示:

3.11、choices

说明:我们会存一些类型,正常类型是放在数据库里面,但是在这边我们可以不放在数据库里面,我放在内存里面。避免链表查询。

class UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=60)#设置用户类型选项user_type_choices = ((1,"超级用户"),(2,"普通用户"),(3,"访客"),)user_type_id = models.IntegerField(choices=user_type_choices,default=1) #把用户类型存在user_type_id字段中,默认值为1

在django中显示中文:

3.12、blank

说明:在django admin是否可以为空

class UserInfo(models.Model):username = models.CharField(max_length=32,blank=True) #在django admin中可以为空password = models.CharField(max_length=60)

 如图:

3.13、verbose_name

说明:django admin中给字段取一个别名,比如取一个中文名

class UserInfo(models.Model):username = models.CharField(max_length=32,verbose_name="用户名") #取一个别名password = models.CharField(max_length=60)

 django后台显示:

3.14、editable

说明:django后台的字段是否可以编辑

class UserInfo(models.Model):username = models.CharField(max_length=32,editable=False) #表示不可编辑,默认是True,不可编辑,django admin 后台直接不显示password = models.CharField(max_length=60)

 django admin的后台显示,直接不显示了:

3.15、error_messages

说明:错误信息

class UserInfo(models.Model):username = models.CharField(max_length=32,error_messages={'null': "不能为空.", 'invalid': '格式错误'})password = models.CharField(max_length=60)

3.16、help_text

说明:django admin提示,就是帮助信息

class UserInfo(models.Model):username = models.CharField(max_length=32,help_text="用户名")password = models.CharField(max_length=60)

 django admin 后台显示:

 

转:https://www.cnblogs.com/zhangqigao/articles/8550451.html



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
author-avatar
无极圈颜汐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有