目录

  • 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相关推荐

  1. Django 定义模型类(八)

    定义模型类 模型类被定义在"应用/models.py"文件中. 模型类必须继承自Model类,位于包django.db.models中 1 . 定义 创建应用booktest,在m ...

  2. Django框架(14.Django中模型类的关系,以及模型类关联查询)

    Django中模型类的关系,以及模型类关联查询 1.模型类关系 1.1 一对多关系 1.2多对多关系 1.3 一对一关系 1.4 一对多举例: 1.5 多对多举例: 1.6 一对一举例: 2.关联查询 ...

  3. 阿语python4-1 django框架v5.0第2.4节 定义模型类

    定义模型类 模型类被定义在"应用/models.py"文件中. 模型类必须继承自Model类,位于包django.db.models中. 接下来首先以"图书-人物&quo ...

  4. python学习第6天---django框架---模型类及数据库操作

    python学习第6天---django框架---模型类及数据库操作 目录 文章目录 1.字段与选项 2.查询函数 3.查询集 4.模型类之间的关系 4.1.对应关系 4.2.关联查询 5.模型管理器 ...

  5. Django框架(3.django设计模型类、模型类生成表、ORM框架简介)

    ORM框架简介 O是object,也就类对象的意思, R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思, M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进 ...

  6. 004--Django(定义模型类、数据的增删改查、F和Q对象)

    1.创建数据库 mysql -uroot -pmysqlcreate database django_demo charset=utf8; 2.配置mysql数据库 在settings.py 中配置数 ...

  7. django中模型类的创建

    ORM框架: 1.一般需要在子应用projects中的models.py定义模型类(相当于数据库中的一张表) 2.必须继承Model或者Model的子类 3.在模型类中定义类属性(必须得为Field子 ...

  8. 在Django当中模型类中的choices怎么切换到其他字段

    在Django当中模型类中的choices怎么切换到其他字段 choices的使用 choices在模型类当中是一个非常常见的字段,它可以让我们的字段更好的理解可以进行切换是非常的方便,利用这样的方法 ...

  9. Django 定义模型2.1

    定义模型 在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为 ...

最新文章

  1. 在 Android 应用程序中使用 SQLite 数据库以及怎么用
  2. rtsp中的rtp发送和head理解
  3. java睡眠后继续执行_Java线程只能有千个,而Go的Goroutine能有上百万个
  4. Faiss优化:针对OMP_NUM_THREADS环境变量设置的测试验证
  5. 通过环境变量注入的方式启动SAP Spartacus B2B模块
  6. 2014阿里巴巴校园招聘笔试题 - 中南站
  7. bean包、entity包、mode包、domain包的区别
  8. scrollview 与 listView 的显示不全问题
  9. 制作cab文件(Windows自带的makecab)
  10. Node.js入门 - 回调函数
  11. 红宝书阅读笔记——OPENGL渲染管线
  12. java 图文生成图片_java生成图片
  13. mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》
  14. Illustrator2020中文版教程,如何在AI中使用蒙版来裁剪内容?
  15. 【软考】信息化和信息系统复习指南
  16. “十四五”新一代信息技术产业发展
  17. java spy_Java Spy-代码跟踪神器
  18. 君莫笑系列视频学习(2)
  19. 全球与中国网络连接视频门铃对讲机设备市场深度研究分析报告
  20. Tomcat 3、4、5、6、7、8、9 各版本下载地址

热门文章

  1. 阿里云 OpenAPI 开发者门户全新上线
  2. 《The Last Night》美术分析
  3. STEAM 97%好评,体验堪比《杀戮尖塔》,为什么玩家说这是2020年上半年最超值的游戏?
  4. 知名论坛猴岛游戏论坛宣布永久关闭!
  5. 数组声明为public final static缺陷
  6. Mysql重置初始密码的方法
  7. nginx 安装、操作命令、基本配置与参数说明
  8. 死磕算法第二弹——栈、队列、链表(5)
  9. springboot13 发布和监听事件
  10. CCF - 201503-3 - 节日