一、先看单表操作
增
方式1:
models.book.objects.create( Book_name = "aaa", Book_info = "bbb", Book_price = "ccc", Book_num = "ddd" )
方式2:用2个*号传递一个字典进去
book_info = { "Book_name":"aaa", "Book_info":"bbb", "Book_price":"ccc", "Book_num":"ddd" } models.book.objects.create(**book_info)
删,通过delete方法
可以通过表中的每个字段进行删除
models.book.objects.filter(id=1).delete() models.book.objects.filter(Book_name="book1").delete()
改,通过update方法,要 调用update方法,必须要querySet对象才可以,比如filter和all方法的对象集合,通过get方法返回的单个对象是不能调用update方法的
models.book.objects.filter(id=1).update( Book_name = "aaa", Book_info = "bbb", Book_price = "ccc", Book_num = "dd" )
models.book.objects.filter(Book_name="book6").update(Book_name="aaaaaaaaaaaaaaaa")
查
get方法:返回单个对象
models.book.objects.all().get(id=2)
filter方法:返回一个对象集合
models.book.objects.filter(id=1)
values方法:返回一个对象集合的字典形式,也可以只返回指定的字段
models.book.objects.filter(id=1).values("Book_name","Book_info")
print(models.book.objects.all().values())
values_list方法:返回一个对象集合的列表的形式
print(models.book.objects.all().values_list())
count方法:通过数据
print(models.book.objects.filter(Book_name="book3").count())
exists方法:统计对象集合中是否有数据,有则为ture,无则为false
print(models.book.objects.filter(Book_name="book3").count())
exclude:返回不符合某个条件的对象集合
models.book.objects.exclude(id=2)
order_by:按照指定的字段从小到大排列
models.book.objects.order_by("Book_price")
order_by:按照指定的字段从大到小排列
models.book.objects.order_by("-Book_price")
reverse:和orader_by加一个符号的效果一样,逆序排列
models.book.objects.reverse("id")
distanct:对结果去重,这里不能对单个字段去重,只能对所有的字段去重
models.book.objects.all().distinct()
二、在看一对多操作
一对多和一对一基本上一样,只有插入数据这里有点不一样
# 先看一对多 # 我们先看下ForeignKey这个字段的值该如何插入 # 虽然我们写的的Book_pub,但是实际上在数据库中存储的字段是Book_pub_id,所以这里有两种方式来搞 # 如果我们知道书对应的出版社的id,则可以直接用Book_pub_id赋值这个数字就可以了 # Book_pub_id = 4 # # 我们还可以直接从数据库取出出版社的对象,然后Book_pub赋值给一个出版社的对象就可以了 # Book_pub = Publish的对象
另外一点不一样的就是,如果在一所对应的表中删除数据,那么会同步删除多表中的包含该一的字段
比如书1的出版社是出版社1,书的出版社是出版社1,那么如果我们在出版社表中删除出版社1,那么不仅仅出版社表中的出版社1的数据会被删除,书表中的书1和书2都会被同步删除
三、再看多对多操作