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()

 

posted @ 2019-03-07 00:51  小菜鸟111  阅读(292)  评论(0编辑  收藏  举报