Django中ORM的基本使用教程

下面我会详细讲解Django中ORM的基本使用教程和两个示例。

ORM简介

ORM全称是Object-Relational Mapping,即对象关系映射,它是一种程序设计技术,用于实现面向对象程序语言与关系数据库之间的映射。在ORM中,每一个数据表映射为一个类,每一条记录映射为类的一个实例。

在Django中,ORM支持各种关系型数据库,如MySQL、PostgreSQL等。ORM使得与数据库交互变得更加简单和安全。它抽象了数据库的操作,开发者不需要再去写SQL语句进行增、删、改、查操作,可以直接通过ORM的API进行操作。

ORM的基本使用教程

1. 创建模型

ORM是通过面向对象方式操作数据库的,因此首先要定义相关的模型。在Django中,可以通过models模块实现模型的定义。定义模型的示例代码如下:

from django.db import models

class User(models.Model):

    name = models.CharField(max_length=20)
    age = models.IntegerField()
    email = models.EmailField()

上面的代码中,定义了一个User类,它继承自models.Model,表示这个类与数据库中的一个表对应。定义了三个属性:name、age和email,对应表中的三个字段,都是CharField、IntegerField和EmailField三种类型的字段。其中max_length表示最大长度,EmailField表示该字段必须是一个有效的邮箱地址。

2. 数据库迁移

模型定义好之后,需要进行数据库迁移操作。数据库迁移是将模型中定义的字段映射到数据库中的表中,并生成相应的表结构。Django中,可以通过以下命令进行数据库迁移操作:

python manage.py makemigrations
python manage.py migrate

第一条命令用于生成迁移文件,第二条命令用于执行迁移。

3. 增加数据

数据库迁移完成之后,即可进行数据的增、删、改、查操作了。在Django中,可以通过以下方式创建、保存一个新的User对象:

user = User(name='Tom', age=20, email='tom@gmail.com')
user.save()

4. 查询数据

Django提供多种方式查询数据,举个例子:

users = User.objects.all()  # 查询全部User对象
user = User.objects.get(name='Tom')  # 查询name字段为Tom的User对象

5. 更新数据

假设我们想要将name为Tom的User对象的email修改成另一个值:

user = User.objects.get(name='Tom')
user.email = 'new_email@gmail.com'
user.save()

这里,我们先通过get方法查询到了一个name为Tom的User对象,然后将它的email属性修改后保存。

6. 删除数据

最后是删除数据的操作,代码如下:

user = User.objects.get(name='Tom')
user.delete()

这里,我们先通过get方法查询到了一个name为Tom的User对象,然后直接使用delete方法删除该对象。

示例一

假设现在我们要开发一个简单的博客系统,有两个模型:文章Article和作者Author,一个作者可以有多篇文章。模型的定义如下:

class Author(models.Model):

    name = models.CharField(max_length=20)
    email = models.EmailField()

class Article(models.Model):

    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    content = models.TextField()

定义了两个模型类,Author类和Article类。其中,Article类有一个外键字段author,用于关联作者对象。

添加一篇文章和一个作者的示例代码如下:

author = Author(name='Tom', email='tom@gmail.com')
author.save()

article = Article(author=author, title='Django ORM tutorial', content='This is a tutorial about Django ORM.')
article.save()

通过上述代码,我们添加了一篇标题为“Django ORM tutorial”的文章,作者为Tom。

示例二

假设现在我们要开发一个简单的在线商城系统,有两个模型:商品Product和购物车Cart,一件商品可以被加入多个购物车。模型的定义如下:

class Product(models.Model):

    name = models.CharField(max_length=20)
    price = models.FloatField()

class Cart(models.Model):

    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    count = models.PositiveIntegerField()

定义了两个模型类,Product类和Cart类。其中,Cart类有一个外键字段product,用于关联商品对象。

新建一个购物车和往购物车中添加商品的示例代码如下:

product = Product(name='apple', price=5.0)
product.save()

cart = Cart(product=product, count=2)
cart.save()

通过上述代码,我们添加了一个商品,名字为“apple”,价格为5.0元,并将其添加到购物车中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django中ORM的基本使用教程 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django admin.py

    介绍 django amdin是django提供的一个后台管理页面,通过Web来实现对数据的操作,而使用django admin 则需要以下步骤: 创建后台管理员 配置url 注册和配置django admin后台管理页面 快速使用 创建后台管理员 在命令行中输入: python manage.py createsuperuser   配置URL 根urls…

    Django 2023年4月11日
    00
  • 创建Django项目图文实例详解

    我来详细讲解一下如何创建一个Django项目的攻略过程,以及包含其中的两条示例说明。 创建Django项目的步骤 在开始创建Django项目之前,确保你已经安装好了Python和Django,可以通过以下命令查看是否已经安装Django: django-admin –version 如果没有安装,可以使用pip命令安装: pip install djang…

    Django 2023年5月16日
    00
  • 利用Python创建第一个Django框架程序

    下面是“利用Python创建第一个Django框架程序”的完整攻略。 1. 安装Python和Django 首先,需要安装Python和Django。在安装之前,需要确认一下本地是否已经安装了Python。如果你已经安装了Python,那么可以跳过这一步。 在Windows环境下,可以使用“Python官网”或“Anaconda”等软件安装包来进行Pytho…

    Django 2023年5月16日
    00
  • django Q和F查询

    Q查询——对对象的复杂查询F查询——专门取对象中某列值的操作 1、对象(django.db.models.Q)可以对关键字参数进行封装,从而更好地应用多个查询,例如: from django.db.models import Q news=New.objects.filter(Q(question__startswith=’What’)) 2、可以组合使用&…

    Django 2023年4月9日
    00
  • Django中login_required装饰器的深入介绍

    下面是关于“Django中login_required装饰器的深入介绍”的完整攻略: 登录验证 在Web开发中,很多功能都需要用户登录之后才能使用。在Django中,我们通过django中内置的装饰器login_required来实现这个功能。 使用login_required装饰器可以很方便的验证用户是否登录。如果未登录,装饰器会将请求重定向到登录页面。 …

    Django 2023年5月16日
    00
  • 使用Django2.0打造小程序助手

    打造个人助手 主角: Django2.0 微信小程序(2017年元旦发布) 技术要求: python3开发基础 Django开发基础 HTML+CSS+JS 开发环境: Python开发环境:Python3.5+pycharm 小程序开发环境:微信开发者工具 系统开发环境:Windows(开发)+linux(部署) 依赖环境&工具 Postman(模…

    Django 2023年4月9日
    00
  • django.db.utils.InternalError: (1054, “Unknown column ‘cid’ in ‘field list'”)

    报错信息:意思是 cid 字段在数据库中不存在 错误原因: 1):models里面设计的表的 字段名 与数据库中的字段名不一致 2):数据库中没有该字段 检查后发现,我的models设计的 cid 而数据库里面是 cid_id 解决方法: 1): 再次执行迁移生成表命令 #python manage.py makemigrations #python man…

    2023年4月9日
    00
  • Django – 权限(5)- 非菜单权限对应的一级菜单展开、面包屑导航

    一、非菜单权限对应的一级菜单展开   需求:客户列表和账单列表页面中都有添加按钮,当点击添加客户(或编辑客户、删除客户)时,客户列表所属的一级菜单展开,当点击添加账单(或编辑账单、删除账单)时,账单列表所属的一级菜单展开。 1、permission表新增一个pid字段,表示非菜单权限的父级菜单权限id,permission模型类如下: class Permi…

    Django 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部