zoukankan      html  css  js  c++  java
  • 25 Jul 18 批量导入 保持搜索 Q补充 GET/POST

    25 Jul 18 

    一、批量导入

    book_list=[]

        for i in range(1,101):

           book=Book(title="book_%s"%i,price=i*i)

            book_list.append(book)

     

    Book.objects.bulk_create(book_list)

     

    二、保持搜索的实现(分页,filter)

    1. request.GET得到的字典不能修改,但可以对其深拷贝的字典对象进行修改

       import copy

       self.params = copy.deepcopy(self.request.GET)  # # <QueryDict: {'a': ['1'], 'b': ['2'], 'xxx': [123]}>

      self.params["page"] = i

     

    2. self.request.GET.urlencode(); self.params.urlencode() # "a=1&b=2&xxx=123"

     

    三、Q用法补充

    from django.db.models import Q

    from app01.models import Book

    Book.objects.filter(title="西")  # <QuerySet []>

    Book.objects.filter(title="西游记")  # <QuerySet [<Book: 西游记>]>

    Book.objects.filter(Q(title="西游记")|Q(price=45))  # <QuerySet [<Book: 西游记>, <Book: 水浒传>]>

     

    但经常,待筛选的对象会以字符串的形式传入,以上方法即失效;以下方法,可把字符串当作对象,从而进行进一步筛选

     

    from django.db.models import Q

    q=Q()

    q.children.append(("title","西游记"))

    q.children.append(("title"+"__icontains","西"))  # 常见用法

    q.children.append(("",""))

    q.connector="or"  # 默认是'and',如果需要或关系,需要将connector设置成"or"

    Book.objects.filter(q)

     

    # 实例

    >>> q=Q()

    >>> q.children.append(("title","西游记"))

    >>> Book.objects.filter(q)

    <QuerySet [<Book: 西游记>]>

    >>> q.children.append(("price",234))

    >>> Book.objects.filter(q)

    <QuerySet []>

    >>> q.connector="or"

    >>> Book.objects.filter(q)

    <QuerySet [<Book: 西游记>, <Book: 张曌和吴晨钰的故事>]>

     

    四、若需要修改数据库用POST请求,若不需要修改数据库用GET请求

  • 相关阅读:
    sort uniq 命令 企业应用场景实战排序
    网络管理相关命令常用必回基础实战
    Zabbix 3.0入门到企业实战(自带模板介绍)
    jsp页面指令
    jsp九大内置对象
    如何将静态页面转化为动态页面
    转发与重定向区别
    cookie的保存时间
    登陆界面 实现思路
    卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2
  • 原文地址:https://www.cnblogs.com/zhangyaqian/p/py20180725.html
Copyright © 2011-2022 走看看