Django模型层

这篇博客详细介绍了Django模型层的操作,包括单表操作如增删改查,字段参数如`auto_now`和`auto_now_add`,以及多表操作如外键、多对多关系的建立和查询。还涵盖了正向和反向查询,跨表查询,双下划线的特殊用法,以及聚合和分组查询等高级功能。
摘要由CSDN通过智能技术生成

单表操作

    DateField里面的参数:

        auto_now:每次更新的时候,都会重新记录时间 (=True)

        auto_now_add:创建数据时,自动将当前时间记录下来 =(True)

 

    测试test创建

import os

if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm.settings")

    import django

    django.setup()

    from app01 import models

##前三行去manage.py中复制

##特别需要注意的是  后面三句的顺序一定要写在__main__中,而且模型层导入放在最后,然后就可以开始测试了

 

 

    单表操作:(强调:只要是queryset对象就可以无限制的点queryset的方法)

models.Book.objects.filter().filter.filter.filter.filter.filter

    单表操作实战-增删改查

#新增数据

#方法1

obj=models.Book.objects.create(name='三国演义',price='10',publish='北方出版社',author='linxiao')

#方法2

obj1=models.Book(name='红楼梦',price='20',publish='南方出版社',author='lindaxian')

obj1.save()

 

#查询

#方法1

book_obj=models.Book.objects.all()

book_obj1=models.Book.objects.filter(name='三国演义',price='10').first()

#取到的是queryset对象 filter中的,是and的关系,.first获得的是一个Book的对象

#方法2

book_obj2=models.Book.objects.get(name='三国演义1')

#获得的直接是对象 但是数据不存在直接报错

 

#修改

#方法1

models.Book.objects.filter(price='20').update(price='15')

#方法2

book_obj=models.Book.objects.filter(name='三国演义').first()

book_obj.name='西游记'

book_obj.save()

#直接使用queryset.xxx可以直接修改保存  如果获得的是一个对象 然后对象.属性修改 必须使用save()保存

 

#删除

models.Book.objects.filter(name='西游记').delete()

#删除的值不存在 不会报错

  

    单表操作实战-补充

<1> all():                  查询所有结果

<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象

<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。(源码就去搂一眼~诠释为何只能是一个对象)

<4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象

<5> order_by(*field):       对查询结果排序('-id')/('price')

<6> reverse():              对查询结果反向排序      >>>前面要先有排序才能反向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值