zoukankan      html  css  js  c++  java
  • django-orm删除数据

    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_studymysite2>python makemigrations
    python: can't open file 'makemigrations': [Errno 2] No such file or directory
    
    E:django_video_studymysite2>python manage.py makemigrations
    Migrations for 'bookstore':
      bookstoremigrations005_book_is_active.py
        - Add field is_active to book
    
    E:django_video_studymysite2>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_studymysite2>
    

    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)
    ]
    
  • 相关阅读:
    redis配置文件redis.conf总结
    react井字棋小游戏实现及优化
    springboot 如何在请求进入controller之前改变body中的值
    记录一个Springboot启动的问题->sprinboot正常启动但是tomcat却没有启动
    websocket-基于springboot的简单实现
    JVM-垃圾回收
    gRPC-Java实践
    Protocol Buffers—-java
    串口通信学习-基础
    Modbus通信协议学习
  • 原文地址:https://www.cnblogs.com/yescarf/p/15125435.html
Copyright © 2011-2022 走看看