django定义模型类-14
目录
- 1. 定义
- 字段类型
- 约束类型
django的模型类定义在应用下的 models.py
文件中。
模型类继承自 django.db.models
包下的 Model
类。
新创建应用 book
,我们将在此应用下做演示。
python manage.py startapp book
1. 定义
以 ‘图书-角色’为例创建模型类
from django.db import modelsclass Book(models.Model):b_title = models.CharField(max_length=20, verbose_name="标题")b_pub_date = models.DateField(verbose_name="发布日期")b_read = models.IntegerField(default=0, verbose_name="阅读数")b_comment = models.IntegerField(default=0, verbose_name="评论数")is_delete = models.BooleanField(default=False, verbose_name="逻辑删除")class Meta:db_table = "book"verbose_name = "书籍"verbose_name_plural = verbose_namedef __str__(self):return self.b_titleclass Role(models.Model):GENDER_CHOICES = ((0, 'female'),(1, 'male'))r_name = models.CharField(max_length=20, verbose_name="角色名称")r_gender = models.SmallIntegerField(choices=GENDER_CHOICES, verbose_name="性别", default=0)r_describe = models.CharField(max_length=200, verbose_name="描述信息", null=True)r_book = models.ForeignKey(Book, on_delete=models.CASCADE, verbose_name="书籍")is_delete = models.BooleanField(default=False, verbose_name="逻辑删除")class Meta:db_table = "role"verbose_name = "角色"verbose_name_plural = verbose_namedef __str__(self):return self.r_name
db_table
指定数据表名字,如果未指明,将会以小写应用名+模型类名
为数据表名字。verbose_name
指定在admin
站点中显示的名字如果没设置主键,django会自动生成一个自动增长的主键列。如果设置了主键,django不会再自动生成。
- 属性命名限制
- 不能是python的保留关键字。
- 不允许使用连续的下划线,这是由django的查询方式决定的。
- 定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:
字段名 = models.类型名(约束)
定义模型类基本格式如下:
from django.db import modelsclass 类名(models.Model):字段名 = models.类型名(约束)class Meta:db_table = "表名"verbose_name = admin中显示名字verbose_name_plural = admin中显示名字复数
字段类型
django-ORM的基本字段类型
1、models.AutoField 自增列
如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。2、models.CharField 字符串字段
必须 max_length 参数3、models.BooleanField 布尔类型
不能为空,Blank=True4、models.ComaSeparatedIntegerField 用逗号分割的数字=varchar继承CharField,所以必须 max_lenght 参数5、models.DateField 日期类型 date对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。6、models.DateTimeField 日期类型 datetime同DateField的参数7、models.Decimal 十进制小数类型 = decimal必须指定整数位max_digits和小数位decimal_places8、models.EmailField 字符串类型(邮箱格式)对字符串进行正则表达式验证9、models.FloatField 浮点类型 = double10、models.IntegerField 整形11、 整形范围integer_field_ranges = {'SmallIntegerField': (-32768, 32767),'IntegerField': (-2147483648, 2147483647),'BigIntegerField': (-9223372036854775808, 9223372036854775807),'PositiveSmallIntegerField': (0, 32767),'PositiveIntegerField': (0, 2147483647),}12、models.IPAddressField 字符串类型(ip4格式)13、models.GenericIPAddressField 字符串类型(ip4或ip6格式)参数protocol可以是:both、ipv4、ipv6验证时,会根据设置报错14、models.NullBooleanField 允许为空的布尔类型15、models.PositiveIntegerFiel 正Integer16、models.PositiveSmallIntegerField 正smallInteger17、models.SlugField 减号、下划线、字母、数字18、models.SmallIntegerField 数字数据库中的字段有:tinyint、smallint、int、bigint19、models.TextField 字符串=longtext20、models.TimeField 时间 HH:MM[:ss[.uuuuuu]]21、models.URLField 字符串,地址正则表达式22、models.BinaryField 二进制23、models.ImageField 图片 在数据库中保存的是文件的路径24、models.FilePathField 文件
约束类型
1、null=True数据库中字段是否可以为空2、blank=Truedjango的 Admin 中添加数据时是否可允许空值3、primary_key = False主键,对AutoField设置主键后,就会代替原来的自增 id 列4、auto_now 和 auto_now_addauto_now 自动创建---无论添加或修改,都是当前操作的时间auto_now_add 自动创建---永远是创建时的时间5、choices 枚举GENDER_CHOICES = ((0, 'male'),(1, 'female'))r_gender = models.SmallIntegerField(choices=GENDER_CHOICES)6、max_length 最大长度7、default 默认值8、verbose_name Admin中字段的显示名称9、name|db_column 数据库中的字段名称10、unique=True 不允许重复11、db_index = True 数据库索
引
12、editable=True 在Admin里是否可编辑13、error_messages=None 错误提示14、auto_created=False 自动创建15、help_text 在Admin中提示帮助信息16、validators=[]17、upload-to 上传路径
转载于:https://www.cnblogs.com/mxuanli/p/9871240.html
django定义模型类-14相关推荐
- Django 定义模型类(八)
定义模型类 模型类被定义在"应用/models.py"文件中. 模型类必须继承自Model类,位于包django.db.models中 1 . 定义 创建应用booktest,在m ...
- Django框架(14.Django中模型类的关系,以及模型类关联查询)
Django中模型类的关系,以及模型类关联查询 1.模型类关系 1.1 一对多关系 1.2多对多关系 1.3 一对一关系 1.4 一对多举例: 1.5 多对多举例: 1.6 一对一举例: 2.关联查询 ...
- 阿语python4-1 django框架v5.0第2.4节 定义模型类
定义模型类 模型类被定义在"应用/models.py"文件中. 模型类必须继承自Model类,位于包django.db.models中. 接下来首先以"图书-人物&quo ...
- python学习第6天---django框架---模型类及数据库操作
python学习第6天---django框架---模型类及数据库操作 目录 文章目录 1.字段与选项 2.查询函数 3.查询集 4.模型类之间的关系 4.1.对应关系 4.2.关联查询 5.模型管理器 ...
- Django框架(3.django设计模型类、模型类生成表、ORM框架简介)
ORM框架简介 O是object,也就类对象的意思, R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思, M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进 ...
- 004--Django(定义模型类、数据的增删改查、F和Q对象)
1.创建数据库 mysql -uroot -pmysqlcreate database django_demo charset=utf8; 2.配置mysql数据库 在settings.py 中配置数 ...
- django中模型类的创建
ORM框架: 1.一般需要在子应用projects中的models.py定义模型类(相当于数据库中的一张表) 2.必须继承Model或者Model的子类 3.在模型类中定义类属性(必须得为Field子 ...
- 在Django当中模型类中的choices怎么切换到其他字段
在Django当中模型类中的choices怎么切换到其他字段 choices的使用 choices在模型类当中是一个非常常见的字段,它可以让我们的字段更好的理解可以进行切换是非常的方便,利用这样的方法 ...
- Django 定义模型2.1
定义模型 在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为 ...
最新文章
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
- rtsp中的rtp发送和head理解
- java睡眠后继续执行_Java线程只能有千个,而Go的Goroutine能有上百万个
- Faiss优化:针对OMP_NUM_THREADS环境变量设置的测试验证
- 通过环境变量注入的方式启动SAP Spartacus B2B模块
- 2014阿里巴巴校园招聘笔试题 - 中南站
- bean包、entity包、mode包、domain包的区别
- scrollview 与 listView 的显示不全问题
- 制作cab文件(Windows自带的makecab)
- Node.js入门 - 回调函数
- 红宝书阅读笔记——OPENGL渲染管线
- java 图文生成图片_java生成图片
- mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》
- Illustrator2020中文版教程,如何在AI中使用蒙版来裁剪内容?
- 【软考】信息化和信息系统复习指南
- “十四五”新一代信息技术产业发展
- java spy_Java Spy-代码跟踪神器
- 君莫笑系列视频学习(2)
- 全球与中国网络连接视频门铃对讲机设备市场深度研究分析报告
- Tomcat 3、4、5、6、7、8、9 各版本下载地址