Django——01基本的models操作

本文详细介绍了使用ORM(对象关系映射)进行数据库操作的方法,包括增加、删除、修改和查询的基本操作,以及如何利用过滤条件、聚合函数等高级功能进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

增加:
方法一:

   obj = Author()
   obj.first_name = 'zhangsan'
   obj.save()

方法二:

    obj = Author(first_name='li')
    obj.save()

方法三:
Author.objects.create(first_name='li')

方法四:

    Author.objects.get_or_create(first_name='li')   # 在插入相同的数据的时候,会进行不插入。

删除

整体思路,先找到相关的数据,然后进行相关的删除

方法一:

    Author.objects.filter(first_name='li').delete()

方法二:

    obj = Author.objects.get(id=5)
    obj.delete()    

修改:
方法一:

    Author.objects.filter(first_name='zhang').update(last_name='sna')

方法二:

    obj = Author.objects.get(id=3)
    obj.first_name = 'zhang'
    obj.save()

查询:

get()  # 获取单条数据。没有找到就报错,找到多个就报错。
first() # 获取查询集(QuerySet)的第一个对象
last() #                        最后一个对象
count() # 统计查询集中的所有对象个数
exists() # 查询查询集是否存在数据
all() # 查询所有的查询集
values()   # 查询集是一个json的相关数据
print(person) # 直接打印相关的查询集,是一个对象的查询集

Author.objects.all().values('password')   # 指定相关的属性名:只显示相关的属性的字典的查询集
Author.objects.all().values_list('password')   # 返回指定属性的元组的集合。

部分重要查询:

Author.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值   

查询出不包括相关的数字。

Author.objects.exclude(id__in=[11, 22, 33]) # not in

select * from Author where id not in (11,22,33)

Author.objects.filter(name__contains="ven")  # contains(和数据库中like语法相同)        

select * from Author where name like ‘%ven%’

Author.objects.filter(name__icontains="ven") # icontains大小写不敏感     

Author.objects.filter(name__regex="^ven")  # 正则匹配
Author.objects.filter(name__iregex="^ven") # 正则匹配,忽略大小写
Author.objects.filter(id__range=[1, 2])   # 范围bettwen and


Author.objects.filter(name='seven').order_by('id')    # asc升序
Author.objects.filter(name='seven').order_by('-id')   # desc降序

Author.objects.all()[10:20]  # 切片,取所有数据的10条到20条,分页的时候用的到,下标从0开始,不能为负数, 可以实现分页

手动分页

    page 页码
    per_page 每页数量 =5
    第1页(page=1):0-4
    第2页(page=2): 5-9
    第3页(page=3): 10-14
    第4页(page=4): 15-19
        ...
    每一页数据范围: 
    	[(page-1)*per_page : page*per_page]

聚合

使用aggregate()函数返回聚合函数的值
	Avg:平均值
	Count:数量
	Max:最大
	Min:最小
	Sum:求和
from django.db.models import Count, Min, Max, Sum
Author.objects.aggregate(Max('age'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值