Django2.0-db(2)-ORM和增删改查

ORM

  • ORM模型映射到数据库中的步骤如下:

  • settings.py中的DATABASES配置好数据库

  • 确保app已安装(INSTALLED APPS)

  • 在app的models.py中定义好模型,该模型(类)必须继承于models.MODEL

    from django.db import models
    
    # Create your models here.
    
    
    class Book(models.Model):
        # 设置主键
        id = models.AutoField(primary_key=True)
        # null=False 表示不为空,其实是默认的
        name = models.CharField(max_length=100, null=False)
        author = models.CharField(max_length=100, null=False)
        price = models.FloatField(null=False, default=0.0)
        def __str__(self):	# 打印实例时返回友好显示
            return "<Book:({name}, {author}, {price})>".format(name=self.name, author=self.author, price=self.price)
    
    
    class Sub(models.Model):
        # 如果没有设置主键,会默认给一个int类型的主键id,自增长
        name = models.CharField(max_length=100, null=False)
    
  • 在命令行终端,切换到项目所在路径

    • 键入python manage.py makemigrations生成迁移路径
    • 键入·python manage.py migrate 将迁移脚本映射到数据库中
  • 如果一个模型没有定义主键,那么将会自动生成一个自动增长的int类型的主键,名字为id

增删查改

添加数据

  • 使用ORM模型创建一个实例化对象,再调用对象的save()方法保存

查找数据

  • 查找工作使用模型的objects对象。可以自定义查询对象。
    • 根据主键查询。使用实例化对象.object.get(pk=xxx)
    • 根据其他字段进行查找。使用object.filter(command)

删除数据

  • 查找到该数据模型后,执行实例化对象.delete()

修改数据

  • 查找到该数据模型后,修改模型上属性的值后,执行save()

实例

from django.shortcuts import render, HttpResponse
from .models import Book  # 从当前models.py导入Book类型

# Create your views here.


def db_operation(request):
    # 增加一行
    book = Book(name="deep", author='van', price=234)
    book.save()
    book = Book(name="dark", author='no', price=222)
    book.save()

    # 查找
    #       根据主键查找,pk表示primary key
    #       可以是`具体的属性=值`这种形式
    book = Book.objects.get(pk=2)
    print("主键查询: ", book)
    
    #       条件查找 filter(command)
    book = Book.objects.filter(author="van")
    print("条件查询: ", book)
    book = Book.objects.filter(author='van').first()
    print("条件查询,获得第一条数据", book)

    # 删除
    book = Book.objects.get(pk=2)  # 获得该项
    book.delete()  # 删除

    # 修改
    book = Book.objects.get(pk=1)  # 获得该项
    book.price = 111
    book.save()  # 保存
    
    return HttpResponse("over")
  • 打印的友好显示

    主键查询:  <Book:(dark, no, 222.0)>
    条件查询:  <QuerySet [<Book: <Book:(deep, van, 234.0)>>]>
    条件查询,获得第一条数据 <Book:(deep, van, 234.0)>
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值