当前位置: 首页 > news >正文

【Django框架】——11 Django模型——02创建模型类

在这里插入图片描述

在这里插入图片描述

一、创建模型类

模型类被创建在"应⽤⽬录/models.py"⽂件中。 模型类必须继承⾃Model类,位于包django.db.models中。 接下来⾸先以"影⽚-⼈物"管理为例进⾏演示。

1.定义 在models.py ⽂件中定义模型类。

from django.db import models


# Create your models here.

# 定义模型类
class Demo(moldes.Moldes):
    pass

(1)数据库表名

模型类如果未指明表名,Django默认以 ⼩写应⽤名_⼩写模型类名 为数据库表名。

(2)关于主键

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

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

(3)属性命名限制

不能是python的保留关键字。 不允许使⽤连续的下划线,这是由django的查询⽅式决定的。 定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

属性 = models.字段类型(选项)

2.字段类型说明

在这里插入图片描述

3.字段选项说明

在这里插入图片描述

null是数据库范畴的概念,blank是表单验证范畴的

4.外键

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引⽤表数据如何处理,在django.db.models中包含了可选常量:

  • CASCADE级联,删除主表数据时连通⼀起删除外键表中数据
  • PROTECT保护,通过抛出ProtectedError异常,来阻⽌删除主表中被外键应⽤的数据
  • SET_NULL设置为NULL,仅在该字段null=True允许为null时可⽤
  • SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可⽤
  • SET()设置为特定值或者调⽤特定⽅法
  • DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出
    IntegrityError异常

5. 迁移

将模型类同步到数据库中。
(1)⽣成迁移⽂件

python manage.py makemigrations

出现问题1
在这里插入图片描述

在项目(settings.py同级)目录中__init__.py中添加

import pymysql
pymysql.install_as_MySQLdb()

出现问题2
在这里插入图片描述

Django使用MySQL数据库需要加载 MySQLdb模块,需要安装 mysqlclient,若已经安装请略过。 (Django2.2版本之前我们安装的是pymysql模块,不过现在使用的mysqlclient )

pip install mysqlclient

(2)同步到数据库中(执行迁移文件)

python manage.py migrate

6. 添加测试数据

mysq -h host -u username -p
show databases;
use filmdb;

在这里插入图片描述

show tables;

在这里插入图片描述

相关文章:

  • 【考研】暨南大学 848 操作系统简答题(2020-2022)
  • docker-compose部署hive、kafka服务
  • @Import注解详解
  • 基于springboot+vue的美食分享网站
  • 动态规划-斐波拉契数列笔记
  • 农民工学CSAPP题目解析-前篇题目解答以及答疑总结
  • HBase系列从入门到精通(二)
  • libusb系列-002-Windows下libusb源码编译
  • 【C++ 科学计算】C++ 矩阵操作运算符
  • 全排列笔记
  • Python环境变量与引包错误
  • Mysql内置函数整理--基础类型函数
  • 万字爽文一篇带你掌握Java8新特性
  • Node.js的Web后端开发调研
  • Spring、MySQL、日期、BigDecimal、集合、反射、序列化中的坑与使用指南
  • CSS实用技巧干货
  • CSS中外联样式表代表的含义
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • hadoop集群管理系统搭建规划说明
  • Javascript编码规范
  • java正则表式的使用
  • Protobuf3语言指南
  • Python学习之路13-记分
  • Swoft 源码剖析 - 代码自动更新机制
  • webgl (原生)基础入门指南【一】
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 入门到放弃node系列之Hello Word篇
  • 深度学习中的信息论知识详解
  • 时间复杂度与空间复杂度分析
  • 小程序 setData 学问多
  • Hibernate主键生成策略及选择
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (2015)JS ES6 必知的十个 特性
  • (BFS)hdoj2377-Bus Pass
  • (floyd+补集) poj 3275
  • (Python) SOAP Web Service (HTTP POST)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)JAVA使用POI操作excel
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (五)Python 垃圾回收机制
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (原創) 未来三学期想要修的课 (日記)
  • (转) 深度模型优化性能 调参
  • (转)创业家杂志:UCWEB天使第一步
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net framework profiles /.net framework 配置
  • .NET 命令行参数包含应用程序路径吗?