Django ORM

def show(req):
    #新增记录两种方式,create save
    # #-------------------create
    # models.Authors.objects.create(name='jiangqijun')
    # models.Authors.objects.create(**{'name':'xiaoming'})
    # #-------------------save
    # author1 = models.Authors(name='xiaohua')
    # author1.save()
    # author2 = models.Authors()
    # author2.name='xiaoli'
    # author2.save()
    #
    # #新增记录存在唯一外键
    # #方式1,直接写入外键的字段名字并且加上id
    # #方式2,查询出外键的记录,作为一个对象赋值
    # models.AuthorDetail.objects.create(sex='男', email='test01@qq.com', birth_date='2019-03-10', author_id=1)
    # author_detail = models.AuthorDetail(sex='女', email='test02@qq.com', birth_date='2019-03-11', author_id=2)
    # author_detail.save()
    #-------------------
    # author3 = models.Authors.objects.get(id=3)
    # models.AuthorDetail.objects.create(sex='男', email='test01@qq.com', birth_date='2019-03-10', author=author3)

    # #publisher新增记录
    # models.Publisher.objects.create(pub_name='才华有限公司1', address='华中地区', city='永州', province='湖南', country='中国',site='www.baidu.com')
    # models.Publisher.objects.create(pub_name='才华有限公司2', address='华南地区', city='深圳', province='广东', country='中国',site='www.baidu.com')
    # models.Publisher.objects.create(pub_name='才华有限公司3', address='华中地区', city='长沙', province='湖南', country='中国',site='www.baidu.com')

    #新增记录存在一对多的外键
    # #------------------直接添加publisher_id
    # models.Book.objects.create(book_name='python', pub_date='2019-09-05', publisher_id='1', price='99')
    # models.Book.objects.create(book_name='java', pub_date='2019-09-05', publisher_id='1', price='98')
    # models.Book.objects.create(book_name='c#', pub_date='2019-09-05', publisher_id='2', price='98')
    # #-------------------添加publiser对象
    # publisher_obj = models.Publisher.objects.get(id=3)
    # models.Book.objects.create(book_name='c#', pub_date='2019-09-05', publisher=publisher_obj, price='98')

    # #新增记录存在多对多的外键
    # #1、如果是通过ManyToManyField创建的,会自动创建第三张表,通过下面的方式进行创建
    # #-------------------查询到两个对象的记录,再进行关联
    # book_obj1 = models.Book.objects.get(id=1)
    # authors_obj1 = models.Authors.objects.get(id=1)
    # authors_obj2 = models.Authors.objects.filter(name='jiangqijun')[1]
    # book_obj1.author.add(authors_obj1,authors_obj2)

    #-------------------查询到两个对象的记录,再进行关联
    # book_obj2 = models.Book.objects.filter(price=98)
    # authors_obj3 = models.Authors.objects.filter(name='jiangqijun')[0]
    # authors_obj3.book_set.add(*book_obj2)

    # -------------------查询api,总共三种方式
    # author_detail_obj=models.AuthorDetail.objects.all()#返回所有的记录
    # print(type(author_detail_obj))
    # for obj in author_detail_obj:
    #     print(obj.sex)
    # print(author_detail_obj[0])

    # print(models.AuthorDetail.objects.filter(sex='男')) #返回多个结果
    # print(models.AuthorDetail.objects.get(sex='女')) #返回结果只能又一个,超过的话就会报错,这里返回得时一个对象
    # print(models.AuthorDetail.objects.all().values('email'))
    #print(AuthorDetail.objects.all().values_list('email','id'))

    #切片,可迭代
    # book_obj = models.Book.objects.all()
    # print(book_obj)
    # for obj in book_obj:
    #     print('############')
    #     print(obj.book_name)
    # print(book_obj[0])

    #惰性机制
    #obj = models.Book.objects.filter(id__gt=1)#如果下面没有使用obj那么这句话不会执行select查询操作
    # print(obj)
    # if obj.exists():
    #     print('ok')

    #执行查询后存在缓存机制,这里就是在第一次执行了查询后,再第二次再次执行得时候还是不会去查数据库
    # obj1 = models.Book.objects.filter(id=3)
    # for i in obj1:
    #     print(i)
    # models.Book.objects.filter(id=3).update(book_name='数学')
    # obj2 = models.Book.objects.filter(id=3)
    # for j in obj2:
    #     print('222222{0}'.format(j))
    #
    # for k in obj1:
    #     print('1111111{0}'.format(k))

    # l = ['1','2','3']
    # #it = l.__iter__()
    # it = iter(l)
    # print(type(it))

    # print(tuple(it))
    # print(next(it))
    # print(next(it))
    # print(next(it))
    # print(type(it))
    #print(tuple(it))

    # #正向查询
    # book1 = models.Book.objects.first()
    # print(book1.book_name)
    # print(book1.price)
    # print(book1.publisher.pub_name)
    #
    # #反向查询
    # publisher1 = models.Publisher.objects.last()
    # print(publisher1.book_set.all()[0])

    #这里的正向是指在book中添加了其他的字段,反向是指被添加在哪里
    #正向的时候book__book_name第一个book是表名,publiser__city是book中绑定的字段的名称

    #连表正向查询之一对多 书名为python的出版社的城市
    # print(models.Book.objects.filter(book_name='c++').values('publisher__city')[0])#取出queryset集合的数据就是字典
    # print(models.Book.objects.filter(publisher__city='永州').values('book_name'))

    # #正向查询之多对多
    # print(models.Book.objects.filter(book_name='c++').values('author__name'))
    # print(models.Book.objects.filter(author__name='jiangqijun').values('book_name'))

    # #连表反向查询之多对一
    # print(models.Publisher.objects.filter(id=1).values('book__book_name'))
    # print(models.Publisher.objects.filter(book__book_name='c++').values('pub_name'))

    # #连表正向查询之多对多
    # print(models.Authors.objects.filter(name='jiangqijun').values('book__book_name'))
    # print(models.Authors.objects.filter(book__book_name='c++').values('name'))

    #模型的双下划线
    # print(models.Book.objects.filter(id__lt=4, id__gt=1))
    # print(models.Book.objects.filter(id__in=[1,3])) #包含
    # print(models.Book.objects.exclude(id=1)) #不包含
    # print(models.Book.objects.filter(book_name__contains='p'))
    # print(models.Book.objects.filter(book_name__icontains='P'))

    #聚合函数
    from django.db.models import Avg, Min, Sum, Max
    # print(models.Book.objects.all().aggregate(Avg('price')))
    # print(models.Book.objects.aggregate(average_price=Avg('price')))
    # print(models.Book.objects.aggregate(Max('price'), Min('price'), Sum('price')))

    #分组函数
    #print(models.Book.objects.values('publisher__pub_name').annotate(Min('price')))

    from django.db.models import F
    from django.db.models import Q

    #修改book中price字段的数值+1
    # models.Book.objects.update(price=F('price')+0.1)
    # print(models.Book.objects.all().values('price'))

    #用来进行与和或查询
    # print(models.Book.objects.filter(Q(id=1)|Q(id=2)))
    # print(models.Book.objects.filter(Q(book_name__startswith='p')|Q(book_name__startswith='c')))
    #print(models.Book.objects.filter(Q(id=2), book_name='c++'))

    #获取条数
    #print(models.Book.objects.all().count())
    #print(models.Book.objects.all().order_by('-id'))
    # print(models.Book.objects.all().values('publisher_id').distinct())
    # print(models.Book.objects.all().values_list('publisher_id').distinct())

    #修改
    #models.Book.objects.filter(id=3).update(book_name='php')

    #删除
    #models.Book.objects.filter(id=1).delete()
    # book1 = models.Book.objects.filter(id=5)
    # book1.publiser.clear()













    #---删除普通删除
    #models.AuthorDetail.objects.filter(id=4).delete()
return render(req, "show.html")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值