# 全自动:利用orm自动帮我们创建第三张关系表 class Book(models.Model): name = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=32) """ 优点:代码不需
```python from django.shortcuts import render,redirect,HttpResponse from app01 import models # Create your views here. def home(request): return render(request,'home.html') def book_list(request): # 先查询出所有的书籍信息 传递给html页面 book_q
# F查询 # 1.查询卖出数大于库存数的书籍 # F查询 """ 能够帮助你直接获取到表中某个字段对应的数据 """ from django.db.models import F # res = models.Book.objects.filter(maichu__gt=F('kucun')) # print(res) # 2.将所有书籍的价格
#统计每个作者出了多少本书 # res = models.Book.objects.annotate(author_num=Count('authors__name')).values('title','author_num') # print(res) #其实直接按照书的名字来统计就可以了,但是必须要写authors,不写就不join中间表了 #不要理解成分组是按照au
# 如何给书籍添加作者? book_obj = models.Book.objects.filter(pk=1).first() # print(book_obj.authors) # 就类似于你已经到了第三张关系表了 # book_obj.authors.add(1) # 书籍id为1的书籍绑定一个主键为1 的作者 # book_obj.authors.add(2,3) # autho
# 一对多外键增删改查 # 增 # 1 直接写实际字段 id # models.Book.objects.create(title='论语',price=899.23,publish_id=1) # models.Book.objects.create(title='聊斋',price=444.23,publish_id=2) # models.Book.objects.create(title='老子'
# 必知必会13条 # 1.all() 查询所有数据 # 2.filter() 带有过滤条件的查询 # 3.get() 直接拿数据对象 但是条件不存在直接报错 # 4.first() 拿queryset里面第一个元素 # res = models.User.objects.all().first() # print(res) #
# 神奇的双下划线查询 # 1 年龄大于35岁的数据 # res = models.User.objects.filter(age__gt=35) # print(res) # 2 年龄小于35岁的数据 # res = models.User.objects.filter(age__lt=35) # print(res) # 大于等于 小于等于 # res = models.User
一、序列化器 1、序列化器的作用 序列化器,在Django框架终究是一个类,她的作用就是序列化和反序列化 序列化:序列化会把(数据库中的)模型对象转换成字典,经过response以后变成字符串,传给客户端(前端) [{"name":"西游记","price":"100.00","author":"吴承恩"}] 反序列化:把客户端(前端)送过
外键字段的增删改查 # 前期数据表准备 # 以图书 出版社 作者 作者详情表为例 # 1. 针对一对多,一对一 # 增加数据,增加一本书 # models.Book.objects.create(title='西游记', price=100, publish_time='2022-02-01', publish_id=1
聚合查询 # 聚合查询 max min avg sum count from django.db.models import Max, Min, Sum, Count, Avg # 可以起别名 # res = models.Book.objects.aggregate(max_price=Max('price')) # print(res)
报错环境:python 3.6 在导入pytorch官方的resnet预训练模型时 使用代码: import torchvision.models as models model=models.resnet50 会出现报错: ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852 解决办法: 在上述下载包的代码前面
在已有数据的表中新增字段时,会弹出下面的步骤让你来操作 Tracking file by folder pattern: migrationsIt is impossible to add a non-nullable field 'Publisher' to book without specifying a default. This is because the database needs something to populate existing ro
home模块 创建home模块 前提:在 luffy 虚拟环境下 1.终端从项目根目录进入apps目录 >: cd luffyapi & cd apps 2.创建app >: python ../../manage.py startapp home 路由分发 主路由:luffyapi/urls.py from django.urls import path, re_path, include urlpatterns = [ # ...
ORM的两个作用: 1、创建、修改、删除数据库中的表(不同写SQL,但无法创建数据库,【只能创建数据库中的表) 2、操作表中的数据(例如insert into update select等)【不同写SQL语句】 第一步:自己创建数据库 启动MySQL服务 自带工具创建数据库 打开SQL,代码如下:【1、mysql
内容回顾 auth模块 """ 认证模块 校验用户是否存在 保存用户状态 校验用户是否登陆 修改密码 ... 该模块默认需要用到django默认的auth_user表 django的admin后台管理需要用到该表 如何创建超级用户/管理员 python3 manage.py createsuperuser """ from django.contrib
过滤Filtering 1 过滤针对于 list,获取所有(对于列表数据可能需要根据字段进行过滤) 2 在请求路径中带过滤条件,对查询结果进行过滤 # models.py 表模型 from django.db import models class Book(models.Model): name = models.CharField(max_length=34) price = model
一、ORM简介 1、什么是ORM ORM是“对象-关系-映射”的简称,不仅在python中,在其他语言中也存在。 简单来说: 我们之前操作数据库,是通过sql语句控制数据库的增删改查,操作起来比较麻烦。 ORM通过对数据库的二次封装,简化了一套自己的操作方法,不再需要书写原生sql语句来控制数据库,方便程
Python/Django 支持分布式多租户数据库,如 Postgres+Citus。 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库节点。 构建多租户数据库的架构包括:为每个租户创建一个数据库、为每个租户创建一个 schema 和让所有租户共享
ORM字段 1、AutoField int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 2、IntegerField 一个整数类型,范围在 -2147483648 to 2147483647。 3、CharField 字符类型,必须提供max_length参数,
F与Q查询 # 导入模块 from django.db.models import F,Q 数据准备: F的功能:能够帮助直接获取到表中某个字段对应的数据,当做查询条件 查询卖出数大于库存数的书籍 res = models.Book.objects.filter(sold__gt=F('inventory')) print(res) # <QuerySet [<Book: 书籍名字:红楼梦>]>
orm中常用字段及参数 列举目前已学习orm常用字段。 字段 描述 AutoField 主键字段:primary_key=True但是orm会自动创建主键字段,所以没有使用。 CharField 字段注释:varbose_name长度:max_length IntegerFieldBigIntergerField 整型:int DecimalField 小数位:max_digits小
数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.objects.all() # 单单执行此语句Django并不会使用数据库,减轻数据库压力 res = models.Book.objects.all() print(res)
django框架中models可以关联表limit_choices_to可进行关联数据筛选 class ClassList(models.Model): """ 班级表 如: Python全栈 面授班 5期 10000 2017-11-11 2018-5-11 """ school = models.ForeignKey(verbose_name='校区',
常见的FieldType数据库字段类型 1、AutoField:自增Field域,自动增加的一个数据库字段类型,例如id字段就可以使用该数据类型,参数中必须填入primary_key=True 2、BigAutoField:和AutoField相同,只是比AutoField要大,参数中必须填入primary_key=True 3、BigIntegerField