主要方法有:
all(): 返回一个包含模式里所有数据记录的结果集queryset
filter():返回一个包含符合指定条件的模型记录的queryset
exclude():和filter相反 查找不符合条件的那些记录
get():获取单个复核条件的记录(没有找到或有超过一个结果都会抛出异常)
order_by(): 排序
queryset的查询及符号:
queryset.distinct
queryset.values()
quetyset.values_list()
queryset.select_related()
queryset.filter(title__gt='123')
querySet.distinct() 去重复
__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
实例:
>>> Publisher.objects.filter(country="U.S.A.", state_province="CA") [<Publisher: Apress>] 逗号表示,and >>> Publisher.objects.filter(name__contains="press") [<Publisher: Apress>]
2.1 对象创建:
>>> p = Publisher(name='Apress', ... address='2855 Telegraph Ave.', ... city='Berkeley', ... state_province='CA', ... country='U.S.A.', ... website='http://www.apress.com/') >>> p.save()
2.2 对象更新:
方法1:
>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
update()方法会返回一个整型数值,表示受影响的记录条数。
方法2:
>>> pub= Publisher.objects.filter(id=52).first() >>> pub.name = 'Apress Publishing' >>> pub.save()
注:1方法更优,2方法会更新publisher 的所有字段,所以效率低。
2.3 删除对象:
单条,
>>> p = Publisher.objects.get(name="O'Reilly") >>> p.delete() >>> Publisher.objects.all() [<Publisher: Apress Publishing>]
多条,
>>> Publisher.objects.filter(country='USA').delete() >>> Publisher.objects.all().delete() >>> Publisher.objects.all() []