django的必知必会13条
参考链接:https://www.cnblogs.com/maple-shaw/articles/9403501.html
为了保存你的CRM操作。
在Python脚本中调用Django环境
import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "BMS.settings") import django django.setup() from app01 import models books = models.Book.objects.all() print(books)
import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "about_orm.settings") import django django.setup() from app01 import models #all() 获取所有的数据 _> QuerySet 对象列表 books = models.Person.objects.all() print(books)
定义str方法:
def __str__(self): return '<Person: {} - {} - {}>'.format(self.pk,self.name,self.age)
import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "about_orm.settings") import django django.setup() from app01 import models #all() 获取所有的数据 _> QuerySet 对象列表 # ret = models.Person.objects.all() # print(ret) #get() 获取一个满足条件的对象 _> 对象 # 获取不到或者获取到多个就报错 # ret = models.Person.objects.get(name='alex') # print(ret) #<Person: 2 - alex - 84> #filter 获取满足条件的所有对象 _> QuerySet 对象列表 # ret = models.Person.objects.filter(name='xx') # print(ret) # <QuerySet []> #firtst() 获取第一个对象 _> 对象 # ret = models.Person.objects.filter(name='xx').first() # print(ret) #None #last() 获取第一个对象 _> 对象 # ret = models.Person.objects.filter(name='xx').last() # print(ret) #None #exclude 获取不满足条件的所有对象 _> QuerySet 对象列表 # ret = models.Person.objects.exclude(name='xx') # print(ret) #<QuerySet [<Person: <Person: 1 - alex - 73>>, <Person: <Person: 2 - alex - 84>>]> # values 获取对象的字段和值 _> QuerySet [{},{}] # 不写参数 获取所有字段的名字和值 # 写参数 获取指定字段的名字和值 # ret = models.Person.objects.all().values('nid','name') # for i in ret: # print(i,type(i)) # print(ret) # value_list 获取对象的值 _> QuerySet [(),()] # 不写参数 获取所有的字段值 # 写参数 获取指定字段值 # ret = models.Person.objects.all().values_list('nid','age') # for i in ret: # print(i,type(i)) #(1, 73) <class 'tuple'> # print(ret) #(1, 73) <class 'tuple'> # (2, 84) <class 'tuple'> # <QuerySet [(1, 73), (2, 84)]> # order_by 排序 指定多个字典 - 降序 # ret = models.Person.objects.order_by('nid','age') # ret = models.Person.objects.order_by('-nid','age') #降序 # print(ret) #reverse 反向排序 对一个已经有序的列表 有效果前必须先排序 # ret = models.Person.objects.reverse() # print(ret) #<QuerySet [<Person: <Person: 1 - alex - 73>>, <Person: <Person: 2 - alex - 84>>]> # distinct 去重 nid也得一样,所有的都得一样 #从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。) # ret = models.Person.objects.values('name', 'nid').distinct() # count 计数 # ret = models.Person.objects.count() #如果QuerySet包含数据,就返回True,否则返回False # ret = models.Person.objects.filter(name='alex').exists() # print(ret)
返回QuerySet对象的方法有
all()
filter()
exclude()
order_by()
reverse()
distinct()
特殊的QuerySet
values() 返回一个可迭代的字典序列
values_list() 返回一个可迭代的元祖序列
返回具体对象的
get()
first()
last()
返回布尔值的方法有:
exists()
返回数字的方法有
count()
作者:wangkaiok —— 小菜鸟111
出处:http://www.cnblogs.com/wangkaiok/
本文版权归作者和博客园共有,但未经作者同意禁止转载,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。