Django中ORM创建表关系
如何创建表关系(一对一 , 一对多 , 多对多)
图书表,出版社表,作者表,作者详情表
换位思考法判断表关系
图书表和出版社表 >>> 一对多 >>> 图书表是多,出版社是一 >>> 建在多的一方
图书表和作者表 >>> 多对多 >>> 需要第三张表
作者表和作者详情表 >>> 一对一 >>> 外键字段一般建在查询频率较高的
在models中创建几个图书类
class Book(models.Model):
title = models.CharField(max_length=64)
"""
max_digits=None,:总位数
decimal_places=None:小数位数
"""
# price decimal(8,2)
price = models.DecimalField(max_digits=8, decimal_places=2)
# publish_id = models.ForeignKey(to='Publish', to_field='id')
"""对于外键字段关系,会自动帮我们拼接_id"""
publish = models.ForeignKey(to='Publish')
"""authors它是一个虚拟字段,它不会实际在表中创建出来这个字段,这一句可以自动帮助我们创建出来第三张表"""
authors = models.ManyToManyField(to='Author')
"""出版社表"""
class Publish(models.Model):
name = models.CharField(max_length=64)
addr = models.CharField(max_length=64)
"""作者表"""
class Author(models.Model):
name = models.CharField(max_length=64)
author_detail = models.OneToOneField(to='AuthorDetail')
"""作者详情表"""
class AuthorDetail(models.Model):
phone = models.CharField(max_length=64)
email = models.CharField(max_length=64)
Django的请求生命周期流程图
以下是Django的请求生命周期流程图:
- 用户发送一个HTTP请求到Django服务器
- Django服务器找到对应的URL模式,并将请求转发给对应的视图函数
- 视图函数处理请求,可能会调用模型、查询数据库、生成响应等操作
- 视图函数返回响应给Django服务器
- Django服务器将响应返回给用户,页面渲染完成
注意:在整个请求生命周期中,Django还会经历中间件、模板引擎和静态文件处理等环节。