Django模型类2

538 阅读1分钟

模型类的CRUD

增加数据

#使用模型类的对象管理器objects.create
User.objects.create(username=xxx,password=xxx,email=xxx,phone=xxx)

#或者
user = User(username=xxx,password=xxx,email=xxx,phone=xxx)
user.save()

可以在Django shell中尝试,代码更改后需重新进入

python3 manage.py shell
>>from user.models import User

查询

User.objects.all() #查询所有数据-->QuerySet对象,遍历获取每个数据对象

#按照字段取值,返回的QuerySet为字典列表
User.objects.values('col1',"col2",...)
#返回的QuerySet为元组列表
User.objects.values_list("col1","col2")

#排序
User.objects.order_by("-age") #降序,默认升序
User.objects.values("username",'age').order_by("age",'-xx') #按照age升序

QuerySet对象.query  #拿到sql语句

练习, 配置一个路由/user/all, 请求方式GET, 视图,show_all

#views.py
def show_all(request):
	users = User.objects.all()
	return render(request,"index.html",locals())
#locals()函数局部变量的字典

让前端以表格形式显示所有的用户数据

条件查询

User.objects.filter(username="jack",age=12) #多个条件and 连接,返回QuerySet对象

#排除查询
User.objects.exclude(username="jack")#排除该条件的数据,返回QuerySet

#获取一个对象,返回对象
User.objects.get(username="jack") 
#查询到多个对象,报错
#没有数据也报错,注意异常捕获

#查询谓词
字段__谓词
User.objects.filter(id__exact=1) #id为1
User.objects.filter(id__gt=1) #id>1
User.objects.filter(id__lte=5) #id<=5
User.objects.filter(username__exact="jack") #username 为jack
User.objects.filter(username__contains="jack")#username中包含jack
User.objects.filter(username__startswith="j") #以j开头的
User.objects.filter(username__endswith="k")
User.objects.filter(username__in=["jack","tom"])#是否在范围内
User.objects.filter(age__range=(25,35))

更新

#更新一个对象
obj = User.objects.get(username="jack")
obj.age = 30
obj.save()

#批量更新
queryset = User.objects.filter(age__gt=5)
queryset.update(age=20)

在以表格形式显示用户信息的基础上,完成用户信息的更新,删除两个按钮的功能。 <a href="book/update/{{ obj.id }}">更新 <a href="book/delete/{{ obj.id }}">删除

input输入组件: 不可编辑,disabled="disabled" 不提交,不设置name属性

删除

#删除单个对象
obj = User.objects.get(username="jack")
obj.delete()

#批量删除
queryset = User.objects.filter(age__lt=5)
queryset.delete()

#伪删除,不真正删除数据
is_delete = models.BooleanField("是否删除",default=False)
#查询数据时,只查询is_delete为False的数据

上一篇:Django模型类1
下一篇:Django模型类3