• 91.一次性处理多条数据的方法:bulk_create,update,delete


    (1)bulk_create: 可以一次性的创建多个对象

    示例代码如下:
    from django.http import HttpResponse
    from .models import Pulisher, BookOrder
    
    
    def index(request):
        publisher =Publisher.objects.bulk_create([
            Publisher(name='hello出版社'),
            Publisher(name='你好出版社')
        ])
        return HttpResponse("success")
    

    (2)update:可以一次性的更新所有的数据。

    示例代码如下:
    from django.http import HttpResponse
    from .models import Pulisher, BookOrder
    
    
    def index(request):
        # 一次性的更新
        BookOrder.objects.update(price=F('price')+5)
        return HttpResponse("success")
    

    (3)delete:一次性的把所有的满足条件的数据都删除掉,但是需要注意的是,删除数据的时候,要注意定义的外键在删除时处理的方式:on_delete。

    示例代码如下:
    from django.http import HttpResponse
    from .models import Pulisher, BookOrder
    
    
    def index(request):
        # delete: 一次性的删除多满足条件的数据
        BookOrder.objects.filter(pk__gte=5).delete()
        return HttpResponse("success")
    

    其中所使用的到的模型的定义文件models.py,示例代码如下:

    from django.db import models
    
    
    # 定义作者模型
    class Author(models.Model):
        name = models.CharField(max_length=100, unique=True)
        age = models.IntegerField()
        email = models.EmailField()
    
        class Meta:
            db_table = 'author'
    
        def __str__(self):
            return "%s,%s,%s" % (self.name,self.age, self.email)
    
    
    # 定义出版社模型
    class Publisher(models.Model):
        name = models.CharField(max_length=100,unique=True)
    
        class Meta:
            db_table = 'publisher'
    
        def __str__(self):
            return " ->:%s" % self.name
    
    
    def Publisher_Default():
        return Publisher.objects.get_or_create(name='默认出版社')
    
    
    # 定义图书模型
    class Book(models.Model):
        name = models.CharField(max_length=100, unique=True)
        pages = models.IntegerField()
        price = models.FloatField()
        rating = models.FloatField()
        author = models.ForeignKey('Author', on_delete=models.CASCADE)
        publisher = models.ForeignKey('Publisher', on_delete=models.SET_DEFAULT, default=Publisher_Default)
        score = models.FloatField(null=True)
    
        class Meta:
            db_table = 'book'
    
        # def __str__(self):
        #     return "(书名:%s,页数:%s,价格:%s,打折:%s,作者:%s,出版社:%s)" % (self.name, self.pages, self.price, self.rating, self.author, self.publisher)
    
    
    # 定义预定图书的模型
    class BookOrder(models.Model):
        book = models.ForeignKey('Book', on_delete=models.CASCADE)
        price = models.FloatField()
        time = models.DateTimeField(auto_now_add=True, null=True)
    
        class Meta:
            db_table = 'book_order'
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    微服务架构下分布式事务解决方案——阿里GTS
    兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。
    解决移动端ios下overflow-x scroll无法隐藏滚动条的问题
    skeleton在心意web上的实践
    小程序开发笔记(八)—Js数组按日期分组显示数据
    小程序开发笔记(七)—加入内容安全检测
    使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用
    vuex无法获取getters属性this.$store.getters.getCurChildId undefined
    函数防抖节流的理解及在Vue中的应用
    Javascript Object常用方法总结
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12272482.html
Copyright © 2020-2023  润新知