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。

再次刷新瀏覽器,查看輸出的結果爲:
在這裏插入圖片描述python

在模型文件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")
相關文章
相關標籤/搜索