Django:ORM基本操作-CRUD,管理器对象objects,----->删除:删除单个数据,删除批量数据
Microsoft Windows [版本 10.0.19042.928]
(c) Microsoft Corporation。保留所有权利。C:\Users\520>cd mysiteC:\Users\520\mysite>dir驱动器 C 中的卷是 Windows-SSD卷的序列号是 42D9-2A68C:\Users\520\mysite 的目录2021/05/20 22:47 <DIR> .
2021/05/20 22:47 <DIR> ..
2021/06/09 23:54 <DIR> .idea
2021/05/20 22:47 135,168 db.sqlite3
2021/05/20 22:32 684 manage.py
2021/06/09 23:34 <DIR> myapp
2021/05/28 23:57 <DIR> mysite
2021/05/20 22:32 <DIR> templates
2021/05/20 22:32 <DIR> venv2 个文件 135,852 字节7 个目录 425,407,660,032 可用字节C:\Users\520\mysite>python manage.py shell
Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.models import Book
>>> b1 = Book.objects.get(id=1)
>>> b1.delete()
(1, {'myapp.Book': 1})
>>> bs = Book.objects.all()
>>> bs
<QuerySet [<Book: 书名:django_出版社:清华大学出版社_价格:33.00_市场价:750.00>, <Book: 书名:jquery_出版社:机械工业 出版社_价格:99.00_市场价:85.00>, <Book: 书名:linux_出版社:机械工业出版社_价格:80.00_市场价:65.00>, <Book: 书名:html5_出版社:清华大学出版社_价格:1.00_市场价:105.00>]>
>>>
为Book类添加is_active字段,
# models.py
from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=50, default="", verbose_name="书名", unique=True)pub = models.CharField(max_length=100, default="", verbose_name="出版社")price = models.DecimalField(max_digits=7, decimal_places=2, default=999, verbose_name="价格")market_price = models.DecimalField(max_digits=7, decimal_places=2, default=9999, verbose_name="零售价")is_active = models.BooleanField(verbose_name="是否活跃", default=True)class Meta:db_table = "book"def __str__(self):return "书名:{}_出版社:{}_价格:{}_市场价:{}".format(self.title, self.pub, self.price, self.market_price)
C:\Users\520\mysite>python manage.py makemigrations
Migrations for 'myapp':myapp\migrations\0005_book_is_active.py- Add field is_active to bookC:\Users\520\mysite>python manage.py migrate
Operations to perform:Apply all migrations: admin, auth, contenttypes, myapp, sessions
Running migrations:Applying myapp.0005_book_is_active... OK
C:\Users>cd..C:\>cd program files\mysql\mysql server 8.0\binC:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -uroot -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 89
Server version: 8.0.25 MySQL Community Server - GPLCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use mysite;
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_mysite |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| author |
| book |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
12 rows in set (0.01 sec)mysql> desc book;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | bigint | NO | PRI | NULL | auto_increment |
| title | varchar(50) | NO | UNI | NULL | |
| price | decimal(7,2) | NO | | NULL | |
| market_price | decimal(7,2) | NO | | NULL | |
| pub | varchar(100) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)mysql> select * from book;
+----+--------+-------+--------------+----------------+-----------+
| id | title | price | market_price | pub | is_active |
+----+--------+-------+--------------+----------------+-----------+
| 2 | django | 33.00 | 750.00 | 清华大学出版社 | 1 |
| 3 | jquery | 99.00 | 85.00 | 机械工业出版社 | 1 |
| 4 | linux | 80.00 | 65.00 | 机械工业出版社 | 1 |
| 5 | html5 | 1.00 | 105.00 | 清华大学出版社 | 1 |
+----+--------+-------+--------------+----------------+-----------+
4 rows in set (0.01 sec)mysql>
1、路径转换器方式,path匹配URL,同时视图里传参
2、查询字符串方式,在HTML页面里设置a标签地址
https://docs.djangoproject.com/zh-hans/3.1/topics/http/urls/#path-converters
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path("bookstore/", include("myapp.urls"))
]
from django.urls import path
from . import viewsurlpatterns = [path("all_book", views.all_book),path("update_book/<int:book_id>", views.update_book),path("delete_book", views.delete_book)
]
views.py
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .models import Book# Create your views here.
def all_book(request):# all_book = Book.objects.all()all_book = Book.objects.filter(is_active=True)return render(request, "myapp/abook.html", locals())def update_book(request, book_id):# 查try:book = Book.objects.get(id=book_id, is_active=True)except Exception as e:print("update book error is {}".format(e))return HttpResponse("book {} does not exist".format(book_id))if request.method == "GET":return render(request, "myapp/update_book.html", locals())elif request.method == "POST":price = request.POST['price']market_price = request.POST['market_price']# 改book.price = pricebook.market_price = market_price# 存book.save()return HttpResponseRedirect("/bookstore/all_book") # 注意:相对地址def delete_book(request):# 通过获取查询字符串book_id拿到要删除的book的idbook_id = request.GET.get("book_id")if not book_id:return HttpResponse("请求异常")try:book = Book.objects.get(id=book_id, is_active=True)except Exception as e:print("--error-{}".format(e))return HttpResponse("--the book id is error")# 将其is_active该为Falsebook.is_active = Falsebook.save()# 302跳转到all_bookreturn HttpResponseRedirect("/bookstore/all_book")
abook.py
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>查看所有书籍</title>
</head>
<body>
<table border="1"><tr><th>id</th><th>title</th><th>pub</th><th>price</th><th>market_price</th><th>op</th></tr><tr>{% for book in all_book %}<tr><td>{{ book.id }}</td><td>{{ book.title }}</td><td>{{ book.pub }}</td><td>{{ book.price }}</td><td>{{ book.market_price }}</td><td><a href="/bookstore/update_book/{{ book.id }}">更新</a><a href="/bookstore/delete_book?book_id={{ book.id }}">删除</a></td></tr>{% endfor %}</tr>
</table></body>
</html>
mysql> select * from book;
+----+--------+-------+--------------+----------------+-----------+
| id | title | price | market_price | pub | is_active |
+----+--------+-------+--------------+----------------+-----------+
| 2 | django | 33.00 | 750.00 | 清华大学出版社 | 1 |
| 3 | jquery | 99.00 | 85.00 | 机械工业出版社 | 1 |
| 4 | linux | 80.00 | 65.00 | 机械工业出版社 | 1 |
| 5 | html5 | 1.00 | 105.00 | 清华大学出版社 | 1 |
+----+--------+-------+--------------+----------------+-----------+
4 rows in set (0.01 sec)# 删除之后,is_active字段变化mysql> select * from book;
+----+--------+-------+--------------+----------------+-----------+
| id | title | price | market_price | pub | is_active |
+----+--------+-------+--------------+----------------+-----------+
| 2 | django | 33.00 | 750.00 | 清华大学出版社 | 1 |
| 3 | jquery | 99.00 | 85.00 | 机械工业出版社 | 1 |
| 4 | linux | 80.00 | 65.00 | 机械工业出版社 | 0 |
| 5 | html5 | 1.00 | 105.00 | 清华大学出版社 | 0 |
+----+--------+-------+--------------+----------------+-----------+
4 rows in set (0.00 sec)mysql>
Django:ORM基本操作-CRUD,管理器对象objects,----->删除:删除单个数据,删除批量数据相关推荐
- 【Django入门】——模型管理器对象、模型管理器类和模型类
文章目录 一.模型管理器对象 1. 自定义模型管理器对象 2. 自定义模型管理器类 3. 自定义模型管理器类应用 3.1 重写框架的方法 3.2 封装自定义方法 4. 模型管理器对象的`model`属 ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->聚合查询、原生数据库操作
Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->查询1(all,values,values_list,order_by)
Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd mysiteC:\U ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->查询3(单条更新,批量更新)
>>> b1 = Book.objects.get(id=1) >>> b1 <Book: 书名:python_出版社:清华大学出版社_价格:20.00_市场 ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->查询2(filter,exclude,get,查询谓词)
https://docs.djangoproject.com/zh-hans/3.2/ref/models/expressions/ Microsoft Windows [版本 10.0.19042. ...
- Django:ORM基本操作-CRUD,管理器对象objects,----->新增
Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...
- manager objects is not callable(管理器对象不可调用)
背景:对数据库进行序列化操作,在从浏览器调用视图函数时,会报 manager objects is not callable(翻译的内容为:管理器对象不可调用) 框架:django和Django RE ...
- Django中--自定义模型管理器类
BookInfo.objects.all()->objects是一个什么东西呢? 答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理 ...
- django orm基本操作一
一.Django–ORM表设计格式(个人) 1.一对一建立外键 不同于django如需扩展原user表,将外键建在副表上.我更喜欢将外键建在主表上 外键名称 = models.OneToOneFiel ...
最新文章
- Android studio 编译器导入一个背景图片
- 详解linux系统的启动过程及系统初始化
- java自定义返回码_java – 自定义HTTP状态代码
- python 注释一段话_干货!Python入门基础知识点总结
- android服务器 性能,Android性能优化(中)
- 序列每天从0开始_序列化、反序列化原理和Protobuf实现机制
- vnc远程桌面精灵,七款让人爱不释手的vnc远程桌面精灵
- Week7 B - TT 的旅行日记
- 中介者模式:还记得你到单位入职的第一天吗?你有没有遇到文中‘王二’的事呢?
- 无法访问eclipse官网?镜像源可以帮你
- matlab植物叶面积,植物叶面积测量方法综述
- 在64位Windows的VS软件中使用C/C++调用gnuplot画图
- 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
- Linux下终端输出重定向至剪贴板的方法
- linux基础测试题
- 阿里 Arthas (阿尔萨斯)工具的使用
- Numpy 最大值与最大值索引函数+random总结
- 【无机纳米材料科研制图——OriginLab 0201】Origin光谱图、曲线图绘制
- 性能优化-稳定性优化
- 〖Web全栈开发①〗—网络编程基础(上)
热门文章
- visual studio Code配置C++环境:
- Python菜鸟快乐游戏编程_pygame(4)
- [luoguP2221] [HAOI2012]高速公路(线段树)
- linux 环境下的进程间的通信——消息队列传输结构体
- JAVA遍历map元素
- virtualBox文件共享
- 网页服务器攻击,WEB服务器攻击分析全过程_91Ri.org
- php 如何根据经纬度计算距离,小程序实例:如何根据经纬度计算两点之间的距离(代码)...
- mysql 判断 字母大写_MySQL中查询时对字母大小写的区分
- java吧 博客系统_【Java】SpringMVC + Mybatis 实现的个人博客系统