一、添加表记录
创建方式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()