首页 > 其他 > 详细

CSIC_716_2020108【Django入门---模型层】

时间:2020-01-08 22:57:34      阅读:77      评论:0      收藏:0      [点我收藏+]

 

时间格式的字段

publish_time = models.DateField() # 年月日

publish_time = models.DateTimeField() # 年月日 时分秒

publish_time = models.DateField()  # 年月日
publish_time = models.DateTimeField()  # 年月日 时分秒
    """
    auto_now:每次修改数据的时候 都会自动将最新的更新时间记录下来
    auto_now_add:只在创建数据的时候将创建时间自动记录下来 之后不会自动改变
    """

用法示例
publish_time = models.DateField(auto_now=True)  
publish_time = models.DateTimeField(auto_now_add=True)  

  

 

 

 

单表查询

 必知必会16条
        1.create()  返回值:对象本身
        2.all()     返回值:queryset对象
        3.filter()  返回值:queryset对象
        4.update()   返回值:影响的行数
        5.delete()   返回值:影响的行数
        6.first()   返回值:queryset结果中的对象
        7.last()    返回值:queryset结果中的对象
        8.get()    返回值:对象本身,如果get的对象不存在,就报错
        9.values(‘field‘)   返回值:queryset对象,对象中包着{field:value}字典
        10.values_list(‘field‘)  返回值:queryset对象,对象中包着(value,)元组
        11.order_by()  返回值:queryset对象; order_by(‘name‘)升序;和order_by(‘-name‘)降序
        12.count()    返回值:整型,统计queryset中元素的数量
        13.exclude()   返回值:queryset对象
        14.exists()     返回值:布尔型, 用于判断能否根据条件查出queryset对象
        15.reverse()   返回值:queryset对象 ,order_by(‘name‘).reverse()等价于order_by(‘-name‘)
        16.distinct()  返回值:queryset对象, 去重务必要保证value()中所列的字段完全一致,才能去重

  

 

双下划线查询


****************大于(等于)******* __gt= __lt= __gte= # greater than equal __lte=
****************范围******* __in=[ ,,,] __range=( ,) #包含边界
***************模糊查询******* __contains=‘F’ #严格大小写 __icontains=‘F’ #忽略大小写 ignorecontains

  

****************对于时间格式的字段****************

fieldname__year=2020  #查询年份是2020的记录
fieldname__month=12  #查询月份是12的记录

  

 

 当表中有外键的时候,通过ORM增删改查的方法

 这里要知道一个前提条件,外键字段在模型类中如果叫field,到数据库中会自动加一个尾缀_id变成field_id

 在多对多的表关系中,外键虽然建在使用频率较高的表上,但是数据库中,使用频率较高的表中没有外键字段,外键字段实际是出现在多对多生成的第三张表中。故在初始化使用频率较高的那张表时,不需要输入外键的值。

 

字段以数据库中的为准   进行新增

#操作数据库对应的字段,一句话直接创建,此时字段以数据库中的为准
models.Book.objects.create(title=‘鬼谷子‘,press_id=4,book_detail_id=2)

 

以模型类中的字段名为准  进行新增

#先获取对象(两种方式获取对象)
press_obj = models.Company.objects.filter(pk=3).first()  # 一定要从queryset中通过例如 .first()取到对象
press_obj = models.Company.objects.get(pk=2)  # 或者通过get直接取到对象
book_detail_obj = models.BookDetail.objects.filter(pk=1).last()
外键直接等于对象即可,此时的外键不用加尾缀_id,以模型类中的字段名为准 res1 = models.Book.objects.create(title=‘诗经‘, press=press_obj, book_detail=book_detail_obj)

  

 查用filter、改用update,方法与上面增类似,也有两种方式。

 

 

 

 

 

ding

 

多表查询

 

聚合查询

 

 

分组查询

 

F与Q查询

CSIC_716_2020108【Django入门---模型层】

原文:https://www.cnblogs.com/csic716/p/12168678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!