单表操作
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(): 对查询结果反向排序 >>>前面要先有排序才能反向