2、添加表记录
方式一:
通过类实例化对象的方式。注意:一定要对象.save()
|
1
2
|
book = models.Book(title="吸星大法", price=200, publisher="明教出版社", pub_date="2018-12-12")book.save() |
方式二:
通过ORM提供的objects提供的方法 create来实现。
|
1
|
book = models.Book.objects.create(title="独孤九剑", price=150, publisher="华山出版社", pub_date="2019-1-12") |
3、查询表记录
1、查询API
<1> all(): 查询所有结果
<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> order_by(*field): 对查询结果排序
<6> reverse(): 对查询结果反向排序
<7> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<8> first(): 返回第一条记录
<9> last(): 返回最后一条记录
<10> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<11> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
model的实例化对象,而是一个可迭代的字典序列
<12> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<13> distinct(): 从返回结果中剔除重复纪录
2、基于双下划线的模糊查询
|
1
2
3
4
5
6
7
8
|
Book.objects.filter(price__in=[100,200,300])Book.objects.filter(price__gt=100)Book.objects.filter(price__lt=100)Book.objects.filter(price__range=[100,200])Book.objects.filter(title__contains="法")Book.objects.filter(title__icontains="python") # 不区分大小写Book.objects.filter(title__startswith="九")Book.objects.filter(pub_date__year=2018) |
4、删除表记录
删除方法就是 delete()。它运行时立即删除对象而不返回任何值。例如:
|
1
|
model_obj.delete() |
你也可以一次性删除多个对象。每个 QuerySet 都有一个 delete() 方法,它一次性删除 QuerySet 中所有的对象。
例如,下面的代码将删除 pub_date 是2018年的 Book 对象:
|
1
|
Book.objects.filter(pub_date__year=2018).delete() |
在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象时也会删除与它相关联的外键对象。例如:
|
1
2
3
|
b = Book.objects.get(pk=1)# This will delete the Blog and all of its Entry objects.b.delete() |
要注意的是: delete() 方法是 QuerySet 上的方法,但并不适用于 Manager 本身。这是一种保护机制,是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认要删除所有的对象,那么你必须显式地调用:
|
1
|
Book.objects.all().delete() |
5、修改表记录
方式一:
通过修改实例对象的属性方式。注意:一定要对象.save()
|
1
2
3
|
book = models.Book.objects.get(title="吸星大法")book.price = 180book.save() |
方式二:
通过ORM提供的objects提供的方法 update来实现。
|
1
|
models.Book.objects.filter(title="吸星大法").update(price=190) |
此外,update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录update()方法会返回一个整型数值,表示受影响的记录条数。

posted on
浙公网安备 33010602011771号