Django模型层(models.py)之单表增删改查

添加表记录

example1:

# 方式1:实例化
publish_obj=Publish(name="夕阳出版社",addr="夕阳路")
publish_obj.save()

 example2:

# 方式2:通过create方法
Publish.objects.create(name='蓝天出版社',addr='蓝天路79号')
# create方法的返回值为该插入记录的对象

example3:

# 批量导入数据:
Booklist=[]
for i in range(50):
    Booklist.append(Book(title=str(i)+"号图书",price=100))
Book.objects.bulk_create(Booklist)

查询表记录

all() 查询所有记录
get(**kwargs) 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
filter(**kwargs) 返回与所给筛选条件相匹配的QuerySet对象
exclude(**kwargs) 返回与所给筛选条件不匹配的QuerySet对象
order_by(*field) 返回一个排序后的QuerySet对象
reverse() 返回一个反向排序后的QuerySet对象
count() 返回数据库中匹配查询(QuerySet)的对象数量。
first() 返回第一条记录
last() 返回最后一条记录
exists() 如果QuerySet包含数据,就返回True,否则返回False
distinct() 从返回结果中剔除重复纪录
values(*field) 返回一个ValueQuerySet,一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
values_list(*field) 它与values()非常相似,它返回的是一个元组序列

模糊查询

<字段>__in 返回一个字段值在指定列表中的QuerySet对象
<字段>__gt 返回一个字段值大于指定值的QuerySet对象
<字段>__lt 返回一个字段值小于指定值的QuerySet对象
<字段>__range 返回一个字段值在指定区间内的QuerySet对象
<字段>__contains 返回一个字段值中含有指定值的QuerySet对象
<字段>__icontains 同contains,但忽略大小写
<字段>__startswith 返回一个字段值以指定值开头的QuerySet对象
<字段>__year

返回一个year为指定值的QuerySet对象,这里的字段是

DateFieldDateTimeField,year可以更改为其它时间选项

删除表记录

 model_obj.delete()

  删除对象,没有返回值

注意:

  可以删除一个对象,也可以删除多个对象(QuerySet)

  在删除对象时,若有关联的外键,会级联删除

  若不想级联删除,可以在添加外键时,传入参数on_delete = models.SET_NULL

修改表记录

model_obj.update(*field)

  返回一个整型数值,表示受影响的记录数。

原文地址:https://www.cnblogs.com/shannen/p/11284427.html