zoukankan      html  css  js  c++  java
  • django ORM操作

    django models 方法

      

    all/values/values_list返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。
    ret=UserInfo.objects.get(id='1')
    
    get返回的是Model对象,类型为列表,说明使用get方法会直接执行sql语句获取数据
    ret=UserInfo.objects.filter() === UserInfo.objects.get()
    filter(QuerySet)和get类似,但支持更强大的查询功能 ,get只支持简单的等于之类查询

    models.py

    多对多关联
    1
    class Boy(models.Model): 2 name = models.CharField(max_length=12) 3 4 class Girl(models.Model): 5 nick = models.CharField(max_length=12) 6 7 class Love(models.Model): 8 b = models.ForeignKey('Boy') 9 g = models.ForeignKey('Girl')

    views.py 

     1 def edit(req):
    2 objs = [models.Love(g_id=2,b_id=1), 3 models.Love(g_id=3, b_id=1), 4 models.Love(g_id=2,b_id=2), 5 models.Love(g_id=4, b_id=3), 6 models.Love(g_id=1,b_id=3), 7 models.Love(g_id=2,b_id=4),] 8 models.Love.objects.bulk_create(objs,6) #整体循环写入数据行 9 obj = models.Boy.objects.filter(love__id='2').first() #love(子表)关联boy和girl(母表),作为参数正向是 小写的 子表名__自己表的列名 反向 10 多对多的关联 不适合用first query对象不只有一个
        print obj.name                           正向     model.Love.objects.filter(b__name='参数')  是双下划綫       11 obj = models.Love.objects.filter(g_id='2')           12 for i in obj: 这样需要多次链表操作耗费资源 等价于
    obj = models.Love.objects.filter(g_id='2').values('b__name')
                                       for i in obj: 
    13 print i.b.name                          print i['name']

    等同于
    obj = models.Love.objects.filter(g_id='2').values('b__name').select_related('g')
           for i in obj:                         需要添加参数,提前做好整个跨表如: obj.表名_set.all()       
            print i.b.name     
    django orm查询filter(**dict)可以查询资格格式 但是必须加上双星**                   
    Take a small step every day
  • 相关阅读:
    [Swift]LeetCode300. 最长上升子序列 | Longest Increasing Subsequence
    备忘录模式之C++实现
    leecode 题解 || Merge k Sorted Lists 问题
    数学三大危机
    singlefile.py
    Data Url生成工具之HTML5 FileReader实现
    算法题:打印1到最大的n位数
    java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils
    hdu 1181 变形课
    postgis经常使用函数介绍(一)
  • 原文地址:https://www.cnblogs.com/qlshao/p/8516525.html
Copyright © 2011-2022 走看看