Django的ORM(2)

作者: wangcc_sd | 来源:发表于2019-03-20 23:47 被阅读1次

添加表记录

方法1

# create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象
  book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")

方法2

book_obj=Book(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")
book_obj.save()

查询表纪录

查询api------>使用说明

<1> all():                  查询所有结果
<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
<5> order_by(*field):       对查询结果排序
<6> reverse():              对查询结果反向排序
<8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
<9> first():                返回第一条记录
<10> last():                返回最后一条记录
<11> exists():              如果QuerySet包含数据,就返回True,否则返回False
<12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                            model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<14> distinct():            从返回结果中剔除重复纪录

views.py

from django.shortcuts import render,HttpResponse

# Create your views here.
from  app01.models import Book

def index(request):
    #--------------------添加记录
    #方法1
    #book_obj = Book(id=1,title='python 红宝书',price=100,pub_date='2012-12-12',publish='人民出出版社',state=True)
    #book_obj.save()
    #方法2
    # book_obj=Book.objects.create(title='go',price=100,pub_date='2014-12-12',publish='山东教育出版社',state=True)
    # print(book_obj.title)
    # print(book_obj.price)
    # print(book_obj.pub_date)

    #---------------------查询
    '''
    1、方法的返回值类型   QuerySet
    2、方法的调用者
    :param request:
    :return:
    '''
    # all方法   返回值是一个 QuerySet对象
    #book_list=Book.objects.all()
    # print(book_list)     #[obj1.obj2]
    # for obj  in book_list:
    #     print(obj)
    # print(book_list[1].title)

    #first   和  last 方法
    #book = Book.objects.all().last()
    #print(book)

    #filter()  #条件过滤     返回 QuerySet对象
    # book_list = Book.objects.filter(title='go')
    # print(book_list)

    #get()  有且只有1个时才有意义,返回值 model对象
    # book_list= Book.objects.get(title='go')
    # print(book_list.price)

    #exclude   排除某个属性
    # ret = Book.objects.exclude(title='go')
    # print(ret)

    #order_by    -id   降序
    # ret = Book.objects.all().order_by('id')
    # print(ret)

    #count()   计数
    # ret = Book.objects.all().count()
    # print(ret)

    #  exist()
    # ret = Book.objects.all().exists()
    # print(ret)


    #value
    # ret = Book.objects.all()
    # for i in ret:
    #     print(i.title)
    #   等价于
    # ret = Book.objects.all().values('price')
    # print(ret)
    '''原理
    values:
    temp = []
    for obj in Book.objects.all()
        temp.append({
            'price'=objects.objects
        })
    return temp
    # [{'price': Decimal('100.00')}, {'price': Decimal('100.00')}, {'price': Decimal('100.00')}, {'price': Decimal('100.00')}
    '''

    # values_list   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
    # ret = Book.objects.all().values_list('price')
    # print(ret)

    #distince  去重
    # ret = Book.objects.all().values('price').distinct()
    # print(ret)
    #返回类型


    #模糊查询
    #GT  查询价格大于 99   lt 小于
    ret =Book.objects.filter(price__gt=99,price__lt=101)
    print(ret)
    Book.objects.filter(price__in=[100, 200, 300])
    Book.objects.filter(price__gt=100)
    Book.objects.filter(price__lt=100)
    Book.objects.filter(price__range=[100, 200])
    Book.objects.filter(title__contains="python")
    Book.objects.filter(title__icontains="python")
    Book.objects.filter(title__startswith="py")
    Book.objects.filter(pub_date__year=2012)
    return HttpResponse(r'ok')
11895932.jpg

相关文章

网友评论

    本文标题:Django的ORM(2)

    本文链接:https://www.haomeiwen.com/subject/yxtfvqtx.html