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的记录
这里要知道一个前提条件,外键字段在模型类中如果叫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
CSIC_716_2020108【Django入门---模型层】
原文:https://www.cnblogs.com/csic716/p/12168678.html