
完美主义者的最终框架
发布日期:2021-05-09 15:23:18
浏览次数:24
分类:精选文章
本文共 2177 字,大约阅读时间需要 7 分钟。
Django模型与数据库关系详解
Django模型是与数据库相关的核心模块,其主要职责是定义数据结构并与数据库进行交互。在Django框架中,models.py
文件是定义数据库表结构的主要场所。Django支持多种数据库类型(如sqlite3、MySQL、PostgreSQL等),只需通过settings.py
进行配置即可,无需修改models.py
中的代码。
Model的作用
与传统三层架构或mvc架构相比,Django的Model相当于数据处理层,专注于数据的管理与操作。Django采用codefirst
开发模式,即开发者只需编写Model类代码,框架自动接查数据库,不需手动操作数据库,提升开发效率。
创建工程与应用
创建工程
django-admin startproject douban
创建应用
python manage.py startapp book
添加新应用至settings.py
中INSTALLED_APPS
。
定义Model
在book/models.py
中,定义具体数据库表结构。每个class
对应一张表,自动生成id
主键。
class Publisher(models.Model): name = models.CharField(max_length=100) website = models.URLField() class Meta: db_table = 'books_publisher'class Author(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() email = models.EmailField() class Meta: db_table = 'books_author'class Book(models.Model): title = models.CharField(max_length=200) publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) publish_date = models.DateTimeField() class Meta: db_table = 'books_book'
数据库同步
生成迁移
python manage.py makemigrations
应用迁移
python manage.py migrate
完成后,数据库会自动生成所需表结构,可通过Navicat查看数据库结构。
数据库操作
插入新对象
# 方法一:直接创建对象并保存from book.models import Authorp1 = Author(name='张三', age=30, email='zhangsan@example.com')p1.save()# 方法二:逐步设置属性并保存p2 = Author()p2.name = '李四'p2.age = 25p2.email = 'lisi@example.com'p2.save()# 方法三:通过 ORM 创建对象p3 = Author.objects.create(name='王五', age=35, email='wanglei@example.com')# 方法四:或创方法p4 = Author.objects.get_or_create(name='李六', age=20)
查询操作
# 查询所有作者all_authors = Author.objects.all()# 查询符合条件的作者specific_author = Author.objects.filter(name='张三').first()#чит greatness#_raw_query = Author.objects.raw('SELECT * FROM books_author WHERE name = "张三"')
更新操作
# 通过对象直接修改author = Author.objects.get(id=1)author.age = 31print(author.age)author.save()# 或通过values修改并保存data = {'name': 'olis', 'email': 'lisi@example.com'}author.update(**data)
删除操作
author = Author.objects.get(id=1)author.delete()
注意事项
- 不要手动修改数据库内容,Django会通过迁移工具记录所有更改。
- 使用
makemigrations
和migrate
命令管理数据库变更。 - 建议使用
shell
环境进行数据库操作,避免 KeyboardInterrupt错误。
通过以上步骤,开发者可以轻松利用Django ORM与数据库进行交互,专注于业务逻辑的实现。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月18日 13时17分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
2017年前端框架、类库、工具大比拼
2019-03-06
wxWidgets源码分析(1) - App启动过程
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(5) - 窗口管理
2019-03-06
wxWidgets源码分析(6) - 窗口关闭过程
2019-03-06
wxWidgets源码分析(7) - 窗口尺寸
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
Mybatis Generator最完整配置详解
2019-03-06
[白话解析] 深入浅出熵的概念 & 决策树之ID3算法
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
[源码分析] 消息队列 Kombu 之 Consumer
2019-03-06
[源码分析] 消息队列 Kombu 之 mailbox
2019-03-06
抉择之苦
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
ASP.NET MVC Action Filters
2019-03-06