python--Django快速入门之数据模型详解

本文详细介绍了Django中的数据模型,包括模型的定义、字段类型、模型字段选项、关系、元选项和模型对象实例。模型是ORM的重要组成部分,负责数据逻辑,与数据库的关系映射。通过模型定义,Django自动生成数据库表结构,提供了丰富的字段类型和选项,支持多种关系(如一对一、一对多、多对多)。模型对象实例包括创建、查询和删除操作,以及查询集的使用和优化。文章还探讨了模型的继承形式,如抽象基类、多表继承和代理模型,以及如何利用它们来实现不同场景下的数据管理需求。
摘要由CSDN通过智能技术生成

一 Model模型

模型(Model)负责业务对象和数据库的关系映射(ORM)。
模型是数据的唯一的、权威的信息源。它包含储存数据的字段和字段限制。
通常,每个模型对应数据库中唯一的一张表。


每个模型都是django.db.models.Model的一个Python 子类。
模型的每个属性都表示为数据库中的一个字段。
Django 提供一套自动生成的用于数据库访问的API。
这极大的减轻了开发人员的工作量

1 ORM

ORM是“对象-关系-映射”的简称,主要任务是:
1. 根据对象的类型生成表结构
2. 将对象、列表的操作,转换为sql语句
3. 将sql查询到的结果转换为对象、列表

2 为什么要用模型?

Model是MVC框架中重要的一部分,主要负责程序中用于处理数据逻辑的部分。通常模型对象负责在数据
库中存取数据
它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就
可以轻松更换数据库。

3 MySQL数据库配置

 在当前环境中安装MySQL

$ yum install mariadb-server -y

安装 pymysql

$ pip install pymysql

MySQL中创建数据库

$ mysql -uroot -ppassword
> create databases 数据库名称 default charset=utf8;

Django项目中配置数据库

修改settings.py文件中的DATABASE配置项
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
#确认mysql中数据库存在;
'USER': '用户名',
'PASSWORD': '密码',
'HOST': 'localhost',
'PORT': '3306',
}
}

MySQL的常见报错解决

报错信息: 找不到MySQL数据库模块
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No mo
dule named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
报错解决方法: 打开 项目名/__init__.py ,写入以下代码导入pymysql:
import pymysql
pymysql.install_as_MySQLdb()

数据库开发流程

在models.py中定义模型类,要求继承自models.Model
from django.db import models
from datetime import datetime

# Create your models here.
class Users(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField(default=20)
phone = models.CharField(max_length=16)
addtime=models.DateTimeField(default=datetime.now)

class Meta:
db_table = "users" # 指定表名

把应用加入settings.py文件的installed_app项
编辑myweb/settings.py文件,并将项目应用文件名添加到该INSTALLED_APPS设置

INSTALLED_APPS = [
# ......
'应用名称',
]

生成迁移文件

$ python manage.py makemigrations

疑难问题解决: 若执行python manage.py makemigrations命令(也可能人比较皮,把migrations文件夹
给删了),会提示"No changes detected." 可能有用的解决方式如下:

# 生成一个空的initial.py
$ python manage.py makemigrations --empty yourappname
# 生成原先的model对应的migration file
$ python manage.py makemigrations

执行迁移

$ python manage.py migrate

注意: 根据数据库表生成model中的类

$ python manage.py inspectdb > app/models.py

二 定义模型

在模型中定义属性,会生成表中的字段


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


django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为
主键列后,则django不会再生成默认的主键列


属性命名限制
   不能是python的保留关键字
   由于django的查询方式,不允许使用连续的下划线

1 定义模型属性

 义属性时,需要字段类型
字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models

使用方式
1. 导入from django.db import models
2. 通过

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值