ORM-添加/删除/修改表记录(编辑)

一、添加表记录
创建方式1:

from django.shortcuts import render
from homework1 import models
def index(request):
    #book_obj自定义类对象
    book_obj = models.BookInfo(
        id=2,
        book_title='西游记',
        book_price=43.5,
        pub_date='2013-01-09',
        publisher='江苏人民出版社',
    )
    book_obj.save()
    print(book_obj)
    print(book_obj.id)

创建方式2:

def index(request):
    #new_book_obj为自定义对象,统称model对象
    new_book_obj = \
        models.BookInfo.objects.create(
        id=3,
        book_title='水浒传',
        book_price=88.3,
        pub_date='2003-01-16',
        publisher='机械工业出版社',
        )
    print(new_book_obj)
    print(new_book_obj.id)

创建方式3:批量创建


def index(request):
    obj_list = []
    for i in range(4,10):
        obj = models.BookInfo(
            id=i,
            book_title='哈利波特%s' % (i - 3),
            book_price=88.3,
            pub_date='2001-11-23',
            publisher='凤凰传媒出版社',
        )
        obj_list.append(obj)
    models.BookInfo.objects.bulk_create(obj_list)

创建方式4:有就更行,没有就创建

    # 只能筛选出一条结果,并且如果是创建的话,需要在default中把所有表字段都填完全
    models.BookInfo.objects.update_or_create(
        # 查询条件
        book_title='卖火柴的小女孩',
        # 修改情况
        defaults={
            'book_price':666,
        }
    )

二、删除表记录
delete()方法的调用者可以是一个model对象,也可以是一个queryset

models.BookInfo.objects.get(id=1).delete()   #可以

models.BookInfo.objects.filter(book_title='昆虫记').delete()   #可以

models.BookInfo.objects.delete()   #不可以

models.BookInfo.objects.all().delete()   #删除全部,可以

三、修改表数据
方式1

# update只能是querset类型才能调用,model对象不能直接调用更新方法,所以使用get方法获取对象的时候是不能update的。
models.BookInfo.objects.filter(book_title__startswith="昆虫").update(book_price=120)

方式2

#这也是修改记录的一种方式,但是这种方式会将所有字段的数据都重新的赋值一遍(不是是不是需要更新的字段值),效率偏低,并且只能是model对象才能使用这种方式。
book_obj = models.BookInfo.objects.get(id=2)
book_obj.book_price = 100
book_obj.save()
posted @ 2021-01-09 11:43  中南毛毛虫  阅读(141)  评论(0编辑  收藏  举报