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,----->删除:删除单个数据,删除批量数据相关推荐

  1. 【Django入门】——模型管理器对象、模型管理器类和模型类

    文章目录 一.模型管理器对象 1. 自定义模型管理器对象 2. 自定义模型管理器类 3. 自定义模型管理器类应用 3.1 重写框架的方法 3.2 封装自定义方法 4. 模型管理器对象的`model`属 ...

  2. Django:ORM基本操作-CRUD,管理器对象objects,----->聚合查询、原生数据库操作

    Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...

  3. 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 ...

  4. Django:ORM基本操作-CRUD,管理器对象objects,----->查询3(单条更新,批量更新)

    >>> b1 = Book.objects.get(id=1) >>> b1 <Book: 书名:python_出版社:清华大学出版社_价格:20.00_市场 ...

  5. Django:ORM基本操作-CRUD,管理器对象objects,----->查询2(filter,exclude,get,查询谓词)

    https://docs.djangoproject.com/zh-hans/3.2/ref/models/expressions/ Microsoft Windows [版本 10.0.19042. ...

  6. Django:ORM基本操作-CRUD,管理器对象objects,----->新增

    Microsoft Windows [版本 10.0.19042.928] (c) Microsoft Corporation.保留所有权利.C:\Users\520>cd..C:\Users& ...

  7. manager objects is not callable(管理器对象不可调用)

    背景:对数据库进行序列化操作,在从浏览器调用视图函数时,会报 manager objects is not callable(翻译的内容为:管理器对象不可调用) 框架:django和Django RE ...

  8. Django中--自定义模型管理器类

    BookInfo.objects.all()->objects是一个什么东西呢? 答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理 ...

  9. django orm基本操作一

    一.Django–ORM表设计格式(个人) 1.一对一建立外键 不同于django如需扩展原user表,将外键建在副表上.我更喜欢将外键建在主表上 外键名称 = models.OneToOneFiel ...

最新文章

  1. Android studio 编译器导入一个背景图片
  2. 详解linux系统的启动过程及系统初始化
  3. java自定义返回码_java – 自定义HTTP状态代码
  4. python 注释一段话_干货!Python入门基础知识点总结
  5. android服务器 性能,Android性能优化(中)
  6. 序列每天从0开始_序列化、反序列化原理和Protobuf实现机制
  7. vnc远程桌面精灵,七款让人爱不释手的vnc远程桌面精灵
  8. Week7 B - TT 的旅行日记
  9. 中介者模式:还记得你到单位入职的第一天吗?你有没有遇到文中‘王二’的事呢?
  10. 无法访问eclipse官网?镜像源可以帮你
  11. matlab植物叶面积,植物叶面积测量方法综述
  12. 在64位Windows的VS软件中使用C/C++调用gnuplot画图
  13. 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
  14. Linux下终端输出重定向至剪贴板的方法
  15. linux基础测试题
  16. 阿里 Arthas (阿尔萨斯)工具的使用
  17. Numpy 最大值与最大值索引函数+random总结
  18. 【无机纳米材料科研制图——OriginLab 0201】Origin光谱图、曲线图绘制
  19. 性能优化-稳定性优化
  20. 〖Web全栈开发①〗—网络编程基础(上)

热门文章

  1. visual studio Code配置C++环境:
  2. Python菜鸟快乐游戏编程_pygame(4)
  3. [luoguP2221] [HAOI2012]高速公路(线段树)
  4. linux 环境下的进程间的通信——消息队列传输结构体
  5. JAVA遍历map元素
  6. virtualBox文件共享
  7. 网页服务器攻击,WEB服务器攻击分析全过程_91Ri.org
  8. php 如何根据经纬度计算距离,小程序实例:如何根据经纬度计算两点之间的距离(代码)...
  9. mysql 判断 字母大写_MySQL中查询时对字母大小写的区分
  10. java吧 博客系统_【Java】SpringMVC + Mybatis 实现的个人博客系统