0
点赞
收藏
分享

微信扫一扫

ORM基础字段与选项

醉倾城1 2022-02-07 阅读 55

ORM框架映射
类—数据表
对象—数据行
属性—字段

1.模型类创建流程

1.1 创建应用

1.2 在应用的models.py中编写类模型

from django.db import models
class 模型类名称(models.Model):
	字段名 = models.字段类型(字段选项)

1.3 迁移同步

makemigtations & migrate

1.4 修改模型类

任何关于表结构的修改,都在对应的模型类上修改
eg:为已经存在的表添加名为info的字段varchar(100)

from django.db import models

# Create your models here.
class Book(models.Model):
    title = models.CharField("书名", max_length=50, default='')
    price = models.DecimalField("定价", max_digits=7, decimal_places=2, default=0.0)
    info = models.CharField('信息', max_length=100, default='') # 此行新增

新增后,执行makemigrations生成中间文件,然后执行migrate
在这里插入图片描述
在这里插入图片描述

2.字段类型

  • BooleanField():数据库类型tinyint(1),编程语言True或Flase,数据库1与0
  • CharField():数据库类型varchar,必须要制定max_length参数
  • DateField():数据库类型date,用于表示日期
    参数三选一:
    1.auto_now每次保存对象,刷新最新的时间,取值(TRUE/FLASE)updatatime
    2.auto_now_add:首次创建时间,取值(True/False),createtime
    3.default:设置时间,取值(‘2022-2-6’)
    4.FloatField():数据库类型double
    5.Decimalfield():与钱相关,必要参数,max_digits:位数总数,包含小数点后面的。decimal_places:小数点后的数字数量
    6.EmailField():数据库类型varchar
    7.IntegerField():数据类型int
    8.ImageFiled():数据库类型varchar(100),保存数据库的路径
    9.TextField():数据库类型longtext,大文本

数据表都是以app名字_表名称出现

3.字段选项

字段选项是创建列的额外信息,允许出现多个字段选项,用逗号隔开,关键字传参。

  • primary_key:True/False
  • blank:True/False控制字段是否允许提交空值
  • null:True/False,表示是否允许改了为空值,默认为False,如果为False,加入default选项来设置默认值
  • default:列默认值,如果null=False,那么就要给定default
  • db_index:True表示改了增加索引
  • unique:True表示改字段是唯一索引
  • db_column:指定列的名称,如果不指定的情况下采用属性名作为列名,特定情况下,当属性名不能被指定为列名时,使用该参数。
  • verbose_name:设置字段在后台admin界面上显示的名称。

只要动了字段选项,均要执行迁移同步

4.meta类

使用meta类给模型赋予属性。

# Create your models here.
class Book(models.Model):
    title = models.CharField("书名", max_length=50, default='', unique=True)
    pub = models.CharField("出版社", max_length=100, default='')
    price = models.DecimalField("定价", max_digits=7, decimal_places=2, default=0.0)
    mark_price = models.DecimalField("市场定价", max_digits=7, decimal_places=2, default=0.0)
    info = models.CharField('信息', max_length=100, default='')
    class Meta:
        db_table = 'book'
        
class Author(models.Model):
    name = models.CharField("作者姓名", max_length=11, default='')
    age = models.IntegerField("年龄",default=1)
    email = models.EmailField("邮箱",null=True)
    class Meta:
        db_table = 'author'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(知识内容来源于达内教育视频课程)

举报

相关推荐

0 条评论