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))        
    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")

你可能感兴趣的:(88.QuerySet API使用详解:get_or_create和bulk_create方法)