Django 6 模型与数据库 (1)

6 篇文章 0 订阅
6 篇文章 0 订阅

Django 对各种数据库提供了很好的支持, 包括: PostgreSQL、 MySQL、 SQLite 和 Oracle, 而且为这些数据库提供了统一的调用 API,这些 API 统称为 ORM 框架。 通过使用 Django 内置的 ORM 框架可以实现数据库连接和读写操作。

构建模型:

ORM 框架是一种程序技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换。

从效果上说,其实是创建了一个可在编程语言中使用的"虚拟对象数据库' ,通过对虚拟对象数据库操作从而实现对目标数据库的操作,虚拟对象数据库与目标数据库是相互对应的。

在 Django 中,虚拟对象数据库也称为模型。通过模型实 现对目标数据库的读写操作,实现方法如下:

  1. 配置目标数据库信息, 主要在 settings.py 中设置数据库信息。
  2. 构建虚拟对象数据库, 在 App 的 models.py 文件中以类的形式定义模型。
  3. 通过模型在目标数据库中创建相应的数据表。
  4. 在视图函数中通过对模型操作实现目标数据库的读写操作。

下面是setting.py文件中的配置文件(假定连接mysql)。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    },
}

我们尝试在index中添加模型文件:

建立俩个模型一个是产品分类表,一个是产品信息表。

# 创建产品分类表
class Type(models.Model):
    id = models.AutoField(primary_key=True)
    type_name = models.CharField(max_length=20)
# 创建产品信息表
class Product(models.Model):
    id = models.AutoField(primary_key=True) #  Type 中命名一个名为 id 的字段,该字段的数据类型为整型并设 置为主键
    name = models.CharField(max_length=50)
    weight = models.CharField(max_length=20)
    size = models.CharField(max_length=20)
    type = models.ForeignKey(Type, on_delete=models.CASCADE)

定义好模型后,需要生成迁移文件并执行使其生成数据表,

生成迁移文件:

>python manage.py makemigrations 

执行迁移文件:

>python manage .py migrate 

Django为模型的数据划分了多种不同的数据类型:

表字段说明
models.AutoField 默认会生成一个名为id的字段并为int类型 
models.CharField 字符串类型 
models.BooleanField布尔类型 
models.ComaSeparatedIntegerField用逗号分割的整数类型 
models.DateField 日期 Cdate) 类型
models.DateTimeField 日期 Cdatetime) 类型 
models.Decimal 十进制小数类型
models.EmailField 字符串类型 (正则表达式邮箱)
models.FloatField浮点类型 
models.IntegerField整数类型 
models.BigIntegerField 长整数类型 
models. IP AddressField 字符串类型 (IPv4正则表达式)
models.GenericIPAddressField 字符串类型 , 参数protocol可 以 是 : both、 IPv4和 ipv6, 验证IP地址 
models.NullBooleanField允许为空的布尔类型 
models.PositivelntegerField正整数的整数类型
models.PositiveSmallIntegerFied小正整数类型
models.SlugField 包含字母、数字、下曲线和连字符的字符串 , 常用于 URL models
models.SmaIlIntegerField 小整数类型, 取值范围 (-32,768---+32,767 ) 
models.TextField 长文本类型 
models.TimeField时间类型, 显示时分秒HH:MM[:ss[.uuuuuu]] 
models.URLField 字符串 , 地址为正则表达式
models.BinaryField 二进制数据类型

 Django 提供的字段类型还会对数据进行正则处理和验证功 能等,进一步完善了数据的严谨性。除了表字段类型之外, 每个表字段还可以设置相 应的参数,使得表字段更加完善。字段参数说明如表 :

参数说明
NuIl如为True, 字段是可以为空
Blank如为True,设置在Admin站点管理中添加数据时可允许空值 
Default设置默认值 
primary_key如为True, 将字段设置成主键 
db_column 设置数据库中 的字段名称 
Unique如为True, 将字段设置成唯一属性, 默认为False 
db_index 如为True, 为字段添加数据库索引 
verbose_name在Admin站点管理设置字段的显示名称 
related_name 关联对象反向引用描述符,用于多表查询 ,可解决一个数据表有两个外 一 键同时指向另一个数据表而出现重名的问题

数据表的关系:

一对一。

一对多。

多对多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值