码迷,mamicode.com
首页 > 其他好文 > 详细

Django ORM基本的增删改查

时间:2017-12-09 15:49:24      阅读:356      评论:0      收藏:0      [点我收藏+]

标签:字段   cut   turn   增删改查   object   指定   pps   app   short   

创建表

步骤:

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基本的增删改查

标签:字段   cut   turn   增删改查   object   指定   pps   app   short   

原文地址:http://www.cnblogs.com/0bug/p/8011469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!