yescarf

orm删除数据

单个数据删除

In [2]: b1=Book.objects.get(id=1)

In [3]: b1.delete()
Out[3]: (1, {\'bookstore.Book\': 1})

In [4]: Book.objects.all()
Out[4]: <QuerySet [<Book: Django_清华大学出版社_1.00_75.00>, <Book: JQury_机械工业出版社_90.00_85.00>, <Book: Linux_机械工业出版社_80.00_65.00>, <Book: HTML5_清华大学出版社_1.00_105.00>]>

In [5]: for i in Book.objects.all():
   ...:     print(i.id)
   ...:
2
3
4
5

批量数据删除

伪删除

删除实例

新增字段is_true

#is_true字段
class  Book(models.Model):
    title=models.CharField(\'书名\',max_length=50,unique=True,default=\'\')
    pub=models.CharField(\'出版社\',default=\'\',max_length=100)
    price=models.DecimalField(\'价格\',max_digits=7,decimal_places=2)
    market_price=models.DecimalField(\'图书零售价\',max_digits=7,decimal_places=2,default=0.0)
    is_active=models.BooleanField(\'是否活跃\',default=True)
    def __str__(self):
        return \'%s_%s_%s_%s\'%(self.title,self.pub,self.price,self.market_price)

数据库迁移

E:\django_video_study\mysite2>python makemigrations
python: can\'t open file \'makemigrations\': [Errno 2] No such file or directory

E:\django_video_study\mysite2>python manage.py makemigrations
Migrations for \'bookstore\':
  bookstore\migrations\0005_book_is_active.py
    - Add field is_active to book

E:\django_video_study\mysite2>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, bookstore, contenttypes, sessions
Running migrations:
  Applying bookstore.0005_book_is_active... OK

E:\django_video_study\mysite2>

views.py

def all_book(request):
    #all_book=Book.objects.all()
    all_book=Book.objects.filter(is_active=True)

    return render(request,\'bookstore/all_book.html\',locals())


def delete_book(request):
    #通过获取查询字符串 book_id 拿到book的id
    #将其is_active 改成False
    #302跳转至all_book

    book_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(\'---delete book get error %s\'%(e))
        return HttpResponse(\'获取id错误\')
    #将其is_active改为False
    book.is_active=False
    book.save()

    #302跳转到all_book

    return HttpResponseRedirect(\'/bookstore/all_book/\')


all_book.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>显示所有书籍</title>
</head>
<body>
    <table border="1">
        <tr>
            <th>id</th>
            <th>title</th>
            <th>pu</th>
            <th>price</th>
            <th>market_price</th>
            <th>op</th>
        </tr>
        {%  for info in  all_book %}
        <tr>
            
             <td>{{info.id}}</td>
             <td>{{info.title}}</td>   
            <td>{{info.pub}}</td>
            <td>{{info.price}}</td>

            <td>{{info.market_price}}</td>
           
            <td>
                <a href="{% url \'update\' info.id %}">更新</a>
                <a href="/bookstore/delete_book?book_id={{info.id}}">删除</a>

            </td>
        </tr>
        {% endfor %}

    </table>
</body>
</html>

urls.py

from django.urls import path
from . import views
urlpatterns=[
    path(\'index\',views.index),
    path(\'all_book/\',views.all_book,name=\'all_book\'),
    path(\'update/<int:book_id>/\',views.update,name=\'update\'),
    path(\'delete_book/\',views.delete_book)
]

分类:

技术点:

相关文章: