Django 增删改查

本文介绍了如何在Django中进行数据库操作,包括获取全部数据并实现分页、新增数据、删除数据(单个和批量)、更新数据以及根据ID查询数据。示例代码详细展示了每种操作的实现方式,帮助读者理解Django的ORM操作。
摘要由CSDN通过智能技术生成

环境:

PyCharm 2021.2

python 3.7

增删改查:

1、获取全部数据

# 获取全部数据
def getAll(request):
    mod = Drug.objects # 获取Drug模型的Model操作对象
    Druglist = mod.all().values()  #获取所有数据
    Druglist = list(Druglist) #转化为列表属性
    return JsonResponse({'data': object_list}) #以json格式输出

添加分页操作:

# 获取药品全部数据
def getAll(request):
    mod = Drug.objects # 获取Drug模型的Model操作对象
    Druglist = mod.all().values()  #获取所有数据
    Druglist = list(Druglist) #转化为列表属性
    pagenum = request.GET.get('pagenum')
    p = Paginator(Druglist, pagenum) #返回分页对象,参数为列表数据,每面数据的条数
    page = request.GET.get('page') #获取当前页页数
    if page == '':
        page = '1'
    page = int(page)
    pages = p.num_pages
    total = p.count
    pageInfo = p.page(page)  # 下标以1开始,如果提供的页码不存在,抛出InvalidPage异常
    hasPrevious = pageInfo.has_previous() #如果有上一页返回True
    hasnext = pageInfo.has_next() #如果有下一页返回True
    plist = list(p.page_range) # 页码列表,从1开始,例如[1, 2, 3, 4]
    number = pageInfo.number # 当前页码
    object_list = pageInfo.object_list #当前页上所有对象的列表
    print(pages,total,hasPrevious,hasnext,number,plist)
    return JsonResponse({'data': object_list,'pages':pages,'total':total,'hasPrevious':hasPrevious,'hasnext':hasnext,'number':number,'plist':plist})

2、新增数据

def addDrug(request):
    mod = Drug.objects  # 获取Drug模型的Model操作对象
    try:
        # 创建插入
        mod.create(
            drugname = request.POST.get("drugname"),
            price = request.POST.get("price"),
            approvelnum = request.POST.get("approvelnum")
        )
        context = {'info': '添加成功!'}
    except:
        context = {'info': '添加失败!'}
    return JsonResponse({"msg": context})

3、删除数据

(1)单个删除

# 根据id删除单个数据
def deleteDrugById(request):
    mod = Drug.objects
    id = request.GET.get("id")
    try:
        mod.get(drugid=id).delete()
        context = {"info":"删除成功"}
    except:
        context = {"info": "删除失败"}
    return JsonResponse({"msg":context})

(2)批量删除

# 根据id列表批量删除数据
def deleteDrugByIdList(request):
    mod = Drug.objects
    idlist = request.GET.getlist('del_ids[]')
    try:
        for id in idlist:
            mod.get(drugid=id).delete()
        context = {"info": "删除成功"}
    except:
        context = {"info": "删除失败"}
    return JsonResponse({"msg": context})

4、更新数据

# 根据药品id更新数据
def updateDrugById(request,drugid):
    mod = Drug.objects
    try:
        Druglist = mod.filter(drugid=drugid).update(
            name=request.POST.get("name")
            approvelnum=request.POST.get("approvelnum")
        )
        context = {"info": "更新成功"}
    except:
        context = {"info": "更新成功"}
    return JsonResponse({"msg": context})

5、查询数据

# 根据药品id获取对应数据
def getDrugById(request,drugid):
    mod = Drug.objects
    Druglist = mod.filter(drugid=drugid).values()
    Druglist = list(Druglist)
    return JsonResponse({"data":Druglist})

其中,查询数据可以使用get()或者filter()两种方法

# 两者等同
Druglist = mod.filter(drugid=drugid).values()
Druglist = mod.get(drugid=drugid).values()

【注】get()或者filter()两种方法,可以多条件过滤查询

Druglist = mod.filter(drugid=drugid,name=name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值