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

  • 相关阅读:
    网页a标签:导航制作 怎么让鼠标经过A标签的时候显示块状背景?
    从头开始,慢慢来,今天工作日志
    想看所有的美国系列电影
    百分比宽度并排元素浮动之后,设置margin,padding换行的问题
    TP5.1 首页路由
    关于Layui 响应式移动端轮播图的问题
    BootStrap 栅格化换行问题
    VS code 格式化插件, 仅需一步, 无须配置
    PHPStorm 批量选择,多光标同时编辑相同的内容
    使用Cmder 安装 Composer 出现 "attempt to call a nil value"
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/10487090.html
Copyright © 2020-2023  润新知