zoukankan      html  css  js  c++  java
  • 查询

    八:增加修改和删除操作
     
    拿Article的models作为范例
    添加信息的几种方式:
    1.article = Article(user='li',tags=1) article.save()
    2.article = Article.objects.get(user='li') article.user= "wei" article.save()
    3.article = Article.objects.create(user='li') article.save()
    更倾向于第三种,不过第一种也可以,第二种可以修改
     
    删除操作  
    article = Article.objects.get(user='li')
    article.delete()
     
     
    {{ article.comment_set.all.count }}
     
    九:单表查询的常用方法
    get() 得到一个对象,没有得到或者得到多个会报错
    all()
    filter() 得到符合条件的对象
    exclude() 得到与输入条件相反的对象
    order_by() 按一定顺序排序
    distinct.values('name')  根据某一个字段进行去重
    [0:10]  从0开始取
     
    常用查询方式:
    __exact 精确等于  例如:filter(name__exact='li')
    __iexact 忽略大小写精确等于
    __contains  包含有某一字段   filter(name__contains="li")
    __icontains 忽略大小写包含某一字段
    但对sqlite当中contains作用等于icontains
    __gt 大于
    __gte 大于等于
    __lt 小于
    __lte 小于等于
    __in 存在于一个list范围内
    __startswith 以…开头
    __istartswith 以…开头 忽略大小写
    __endswith 以…结尾
    __iendswith 以…结尾,忽略大小写
    __range 在…范围内
    __year 日期字段的年份
    __month 日期字段的月份
    __day 日期字段的日
    __isnull=True/False
    __isnull=True 与 __exact=None的区别

     filter(name__in=['li','wei'])
     
     
    十三:自定义QuerySet及惰性机制
     
    comment = Comment.objects.filter(user__username='li')
    这样查询之后还可以接着查询comment.exclude(user__username='wei')
    返回为一个QuerySet查询集,但不会真正去查询,直到使用到它的时候才去数据库里面进行查询,然后上面两句查询语句会合成一大句sql查询语句
     
    自定义QuerySet其实就是写的查询语句
     
     

    cate怎么理解QuerySet的查询是惰性的(当我们去执行all,filter,get,是不会去执行sql的,

    当我们去调用查询结果集的时候会执行sql)gory_list Category.objects.all()[:1]导入分类信息,


    这里需要传入参数,因为QuerySet查询是惰性的,不会一下子查询出所有的记录只会查询出当前页面的内容,所以当跳转页面的时候,应该重新传入参数
    小技巧:type(category_list) 返回的是QuerySet   type('sss')返回str
     
     
    去重复方法distinct是Django自带的去重复方法,对整个字段进行去重3、django中直接使用sql的两种方式 SELECT DISTINCT DATE_FORMAT(date_publish, '%Y-%m') as col_date FROM blog_article ORDER BY date_publish 3.1、raw (异常:Raw query must include the primary key,返回结果必须包含主键) 3.2、excute
    可以直接在Django中写sql语句进行查询,但不推荐这种方式如 Article.objects.raw('
    SELECT DISTINCT DATE_FORMAT(date_publish, '%Y-%m') as col_date FROM blog_article ORDER BY date_publish')
    这样可以直接进行查询


    #站点基本信息设置
    SITE_NAME = settings.SITE_NAME
    SITE_DESC = settings.SITE_DESC
    comment_count_list = Comment.objects.values('article').annotate(comment_count=Count('article')).order_by('-comment_count')
    article_comment_list = [Article.objects.get(pk=comment['article']) for comment in comment_count_list]
    return locals()
    经验证,comment['article']为Article当中的id编号





  • 相关阅读:
    sqlserver OpenRowSet 对应的三种数据库驱动
    讨论贴:在sp_executesql 中生成的临时表的可见性
    避免创建表的情况下,执行存储过程插入临时表
    讨论贴:Sqlserver varbinary 是二进制数据,却是十六进制的表现形式
    对于unallocated space的翻译 我想说几句话
    增删改查 的一些不常用的小技巧
    转 TextBox的EnableViewState属性问题
    总结 output 用法
    VSIX 插件右键菜单(2)
    MVC使用记录
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749454.html
Copyright © 2011-2022 走看看