Django ORM基本的增删改查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM基本的增删改查相关的知识,希望对你有一定的参考价值。

创建表

步骤:

1.app下models.py里创建类(继承models.Model)

from django.db import models


class UserInfo(models.Model):
    # 自增主键如果不创建,将自动创建一个自增主键叫 id
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

2.配置settings.py的INSTALLED_APPS项添加app

3.执行命令 python manage.py makemigrations 

                   python manage.py migrate

 

此时表已经生成,同时强大的Django还会为我们生成其他的表,暂时探讨其他表的用途。

技术分享图片

可以看到Django为我们自动生成了id字段

技术分享图片

添加记录

方式1:

from django.shortcuts import HttpResponse
from app01 import models


def addInfo(request):
    models.UserInfo.objects.create(username=‘lcg01‘, password=‘123‘)
    return HttpResponse(‘add success!‘)

方式2:

from django.shortcuts import HttpResponse
from app01 import models


def addInfo(request):
    obj = models.UserInfo(username=‘lcg2‘, password=‘456‘)
    obj.save()
    return HttpResponse(‘add success!‘)

结果表:

技术分享图片

第一种方式也可以接收一个返回值,即此次增加的记录对象。

而且可以换一种更优雅的写法:

    dic = {‘username‘: ‘lcg3‘, ‘password‘: ‘321‘}
    models.UserInfo.objects.create(**dic)

查询记录

def searchInfo(request):
    s = models.UserInfo.objects.all()
    print(s)
    return HttpResponse(‘search success!‘)

结果:

<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

返回的是Django提供的一个Queryset类型,我们可以把它理解为一个列表,列表中每个元素都是一个UserInfo对象,每个对象内部封装了id、username、password。

def searchInfo(request):
    s = models.UserInfo.objects.all()
    for obj in s:
        print(obj.id, obj.username, obj.password)
    return HttpResponse(‘search success!‘)

结果:

1 lcg01 123
2 lcg2 456
3 lcg3 321

注意:即使是只找到一个记录对象,返回的也是Queryset类型。

s = models.UserInfo.objects.filter(username=‘lcg01‘, password=‘123‘)
print(s)

# <QuerySet [<UserInfo: UserInfo object>]> 

  可以使用first()获取第一个对象(不存在则返回None),通过count()获取对象个数。

s=models.UserInfo.objects.filter(id=1).first()
print(s)   

# UserInfo object


s=models.UserInfo.objects.filter(id=1).count()
print(s)

# 1

 使用get()也可以获取一个对象,不过找不到就会报错

s=models.UserInfo.objects.get(id=100)
print(s)

技术分享图片

删除记录

models.UserInfo.objects.filter(username=‘lcg3‘).delete()

更新记录

更新所有

models.UserInfo.objects.all().update(password=‘666‘)

更新指定

models.UserInfo.objects.filter(id=1).update(password=‘999‘)

技术分享图片

 

以上是关于Django ORM基本的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

Django中ORM对数据库的增删改查操作

48.Python中ORM模型实现mysql数据库基本的增删改查操作

Python学习---django之ORM的增删改查180125

python-django框架-orm相关继续&ORM的增删改查操作_20191110

Django中ORM对数据库的增删改查操作

Django之ORM的增删改查