定义属性

Django根据属性的类型确定以下信息:

  • 当前选择的数据库支持字段的类型
  • 渲染管理表单时使用的默认html控件
  • 在管理站点最低限度的验证

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。

默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

注意:pk是主键的别名,若主键名为id2,那么pk是id2的别名。

属性命名限制:

  • 不能是python的保留关键字。
  • 不允许使用连续的下划线,这是由django的查询方式决定的,在第4节会详细讲解查询。
  • 定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:
属性=models.字段类型(选项)

字段类型

使用时需要引入django.db.models包,字段类型如下:

  • AutoField:自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。
  • BooleanField:布尔字段,值为True或False。
  • NullBooleanField:支持Null、True、False三种值。
  • CharField(max_length=字符长度):字符串。
    • 参数max_length表示最大字符个数。
  • TextField:大文本字段,一般超过4000个字符时使用。
  • IntegerField:整数。
  • DecimalField(max_digits=None, decimal_places=None):十进制浮点数。
    • 参数max_digits表示总位数。
    • 参数decimal_places表示小数位数。
  • FloatField:浮点数。
  • DateField[auto_now=False, auto_now_add=False]):日期。
    • 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
    • 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
    • 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。
  • TimeField:时间,参数同DateField。
  • DateTimeField:日期时间,参数同DateField。
  • FileField:上传文件字段。
  • ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片。

选项

通过选项实现对字段的约束,选项如下:

  • null:如果为True,表示允许为空,默认值是False。
  • blank:如果为True,则该字段允许为空白,默认值是False。
  • 对比:null是数据库范畴的概念,blank是表单验证范畴的
  • db_column:字段的名称,如果未指定,则使用属性的名称。
  • db_index:若值为True, 则在表中会为此字段创建索引,默认值是False。
  • default:默认值。
  • primary_key:若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。
  • unique:如果为True, 这个字段在表中必须有唯一值,默认值是False。

综合演示

修改booktest/models.py中的模型类,代码如下:

from django.db import models#定义图书模型类BookInfo
class BookInfo(models.Model):#btitle = models.CharField(max_length=20)#图书名称btitle = models.CharField(max_length=20, db_column='title')#通过db_column指定btitle对应表格中字段的名字为titlebpub_date = models.DateField()#发布日期bread = models.IntegerField(default=0)#阅读量bcomment = models.IntegerField(default=0)#评论量isDelete = models.BooleanField(default=False)#逻辑删除#定义英雄模型类HeroInfo
class HeroInfo(models.Model):hname = models.CharField(max_length=20)#英雄姓名hgender = models.BooleanField(default=True)#英雄性别isDelete = models.BooleanField(default=False)#逻辑删除#hcomment = models.CharField(max_length=200)#英雄描述信息hcomment = models.CharField(max_length=200, null=True, blank=False) #hcomment对应的数据库中的字段可以为空,但通过后台管理页面添加英雄信息时hcomment对应的输入框不能为空hbook = models.ForeignKey('BookInfo')#英雄与图书表的关系为一对多,所以属性定义在英雄模型类中

然后生成迁移文件并执行迁移命令,最后查看test2数据库中的内容。

Django中模型类 属性-学习笔记相关推荐

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

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

  2. django中模型类的创建

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

  3. Django框架(5.django中模型类建立关系和多表关系查询)

    1.建立好模型类: from django.db import models# 设计和模型对应的类,(模型类) # Create your models here.# 一类 # 图书类 class B ...

  4. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))

    Q对象 作用:用于查询时条件之间的逻辑关系.not and or,可以对Q对象进行  &  |  ~  操作. & : 且        | :  或          ~ :非: 就 ...

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

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

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

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

  7. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

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

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

  9. django定义模型类-14

    目录 1. 定义 字段类型 约束类型 django的模型类定义在应用下的 models.py 文件中. 模型类继承自 django.db.models 包下的 Model 类. 新创建应用 book ...

最新文章

  1. 左击鼠标出现右击选项是怎么回事_跟着诗妍姐姐学电脑——鼠标
  2. 项目管理实战之团队管理 (转自:zhuweisky)
  3. jenkins教程_2 入门
  4. php论坛有哪些_2020面向PHP的5个最佳框架,解释了为什么选择它们
  5. 强大的诺顿扼杀了alexa工具条
  6. Oracle 索引详解(index)
  7. linux硬盘序列号在哪看,linux下怎样查看硬盘型号和硬盘序列号
  8. Android、Python实现微信运动
  9. 不要让刷单限制了你的运营能力,零基础店铺流量爆发技巧!
  10. Kubernetes 外部 IP Service 类型
  11. 固定成本、可变成本、沉没成本、机会成本
  12. 管家婆财贸双全ⅡTOP 期间202012的损益类科目本币(外币或者数量)余额不为零,不能年结存。
  13. 独立院校转设,高考新生何去何从|转设对新生有哪些影响
  14. python飞机大战爆炸效果实现_python飞机大战添加爆炸效果
  15. compiled.php,laravel compiled.php 缓存 命令行
  16. Python 多线程 threading.Thread 同时最多有 n 个线程
  17. Hang Detect 问题分析案例
  18. 推荐系统精排模型中的ID特征
  19. matlab中h无穷状态反馈控制,求教 :用LMI方法求倒立摆H无穷状态反馈控制器程序...
  20. 前端渲染HTML与后端渲染HTML的区别?

热门文章

  1. sync - 清空文件系统缓冲区
  2. bzoj3156 防御准备 - 斜率优化
  3. 基于MVVM的知乎日报应用安卓源码
  4. 计算本年 本月 本周的起始日期
  5. 基于sqlite数据库的C语言编程
  6. python3基础3--数据类型--数据运算--表达式if -else-while-for
  7. 打开cmd窗口新技巧get
  8. 招商银行信用卡中心华泰证券暑期实习软开笔试小结
  9. Kendo UI开发教程:Kendo UI模板概述
  10. android之自定义广播