zoukankan      html  css  js  c++  java
  • 88.QuerySet API使用详解:get_or_create和bulk_create方法

    get_or_create

    根据某个条件进行查找,如果找到了匹配的数据就会返回这条数据,如果没有找到匹配到的数据,就会创建一个。示例代码如下:
    from django.http import HttpResponse
    from .models import Pulisher
    
    
    def index9(request):
        pulisher = Publisher.objects.get_or_create(name='深圳大学出版社')
        print(pulisher)
        # 查看publisher的类型
        # print(type(pulisher))        <class 'tuple'>
        return HttpResponse("success")
    
    返回的结果为:

    在这里插入图片描述

    返回的对象为一个元组,元组中包含两个值,第一个值为返回的publisher对象,如果可以找到就会返回找到的对象,如果不能找到就会添加了之后返回。第二个值为判断返回的对象是否是通过create()创建的,如果是新创建的,就会返回True,否者的话就会返回False。

    再次刷新浏览器,查看输出的结果为:
    在这里插入图片描述

    在模型文件models.py中,可以指定外键引用时,在所引用的外键被删除的时候,将数据库表中的值设置为默认的。示例代码如下:
    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)
    

    bulk_create

    一次性的创建多个对象,并且不用单独的进行save()操作。示例代码如下:
    def index(request):
        publisher =Publisher.objects.bulk_create([
            Publisher(name='hello出版社'),
            Publisher(name='你好出版社')
        ])
        return HttpResponse("success")
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    oracle中varchar2和nvarchar2的区别
    Hbuilder与夜神连接
    BUILD 2015: Visual Studio对GitHub的支持
    Visual Studio Developer Assistant 3月新功能展示
    Visual Studio 发布新版API智能提示
    微软发布手机版 Sample Browser。7000多示例代码一手掌握
    微软 PowerShell Script Explorer 满血复活,正式发布
    IBM的“认知计算时代”
    最新 Windows 10 应用项目模板发布
    Windows 10四大版本区别详解:家庭版, 专业版, 企业版和教育版
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12271394.html
Copyright © 2011-2022 走看看