django模型层(model)进行建表、查询与删除的基础教程

yizhihongxing

下面是“django模型层(model)进行建表、查询与删除的基础教程”的攻略:

什么是Django模型层

Django模型层,又称为ORM(Object Relational Mapping,对象关系映射),是Django的核心组件之一。它可以让我们不需要编写SQL语句就能与数据库进行交互。在模型层中,我们可以定义数据表、字段、数据类型、索引等信息,这些信息都直接反映在真实的数据库中。

建表

要在Django中使用模型层,首先需要在models.py文件中定义一个模型类。例如,我们要定义一个名为Student的模型类,可以如下定义:

from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=20, verbose_name='姓名')
    age = models.IntegerField(verbose_name='年龄')
    gender = models.CharField(max_length=10, verbose_name='性别')
    class_name = models.CharField(max_length=20, verbose_name='班级名称')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    def __str__(self):
        return self.name

上面代码中,我们使用models.Model类来继承Student类,表示Student类是一个模型类。接下来,我们定义了Student模型类的几个字段:name、age、gender、class_name、create_time。其中,各字段的含义可以看字段名,比如name字段是CharField类型,最大长度为20。每个字段都可以定义verbose_name属性,表示该字段的中文名称。

定义完模型类后,我们需要用以下命令来生成数据表:

python manage.py makemigrations
python manage.py migrate

执行完上面两个命令后,在数据库中就会自动生成一个名为student的表,里面包含了我们定义的各个字段信息。

查询

在Django模型层中,查询数据有常用的两种方法:all()和get()。

  • all()方法:返回指定模型类下的所有数据。

例如,我们要查询Student模型类下的所有数据,可以使用以下代码:

students = Student.objects.all()
  • get()方法:返回指定条件下的一条数据,如果匹配多条数据或未匹配到数据,将会抛出异常。

例如,我们要查询Student模型类下名字为“张三”的学生数据,可以使用以下代码:

student = Student.objects.get(name='张三')

需要注意的是,get()方法必须满足条件唯一,否则会抛出MultipleObjectsReturned或DoesNotExist异常。

删除

在Django模型层中,删除数据使用delete()方法。

例如,我们要删除Student模型类下名字为“张三”的数据,可以使用以下代码:

Student.objects.filter(name='张三').delete()

上面代码中,我们使用filter()方法进行过滤,返回一个QuerySet对象,然后调用delete()方法删除过滤后的所有数据。

示例

我们来看一个完整的例子,首先定义一个模型类:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=50, verbose_name='书名')
    author = models.CharField(max_length=20, verbose_name='作者')
    publish_date = models.DateField(verbose_name='出版日期')
    price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='价格')
    category = models.CharField(max_length=20, verbose_name='分类')
    description = models.TextField(verbose_name='简介')

接下来,执行以下命令生成数据表:

python manage.py makemigrations
python manage.py migrate

然后我们可以进行CRUD操作:

# 创建一本新书
book = Book(title='Python基础教程', author='小明', publish_date='2020-11-01', price=68.50, category='计算机', description='本书是全面介绍Python编程语言的优秀教材。')
book.save()

# 查询所有书籍
books = Book.objects.all()

# 条件查询符合条件的书籍
book = Book.objects.get(title='Python基础教程')

# 修改书籍的价格
book.price = 78.50
book.save()

# 删除书籍
Book.objects.filter(title='Python基础教程').delete()

上面的代码中,我们通过save()保存了新书,使用all()查询了所有书籍,使用get()查询符合条件的书籍,使用delete()删除符合条件的书籍。同时也对查询到的书籍信息进行了修改和保存操作。

以上就是“django模型层(model)进行建表、查询与删除的基础教程”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django模型层(model)进行建表、查询与删除的基础教程 - Python技术站

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

相关文章

  • python+django+selenium搭建简易自动化测试

    我来详细讲解Python + Django + Selenium 搭建简易自动化测试的完整攻略。本攻略包含以下几个部分:环境搭建、安装必要库、配置Django、使用Selenium编写自动化测试脚本。 环境搭建 在开始搭建之前,需要确保你的电脑上安装了Python环境。可以通过终端命令python –version来检查是否安装。如果尚未安装,请到Pyth…

    Django 2023年5月16日
    00
  • django基础知识之状态保持session:

    http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括cookie、session,会话一般指session对象 使用cookie,所有数据存储在客户端,注意不要存储敏感信息 推荐使用sesison方式,所有数据存储在服务器端…

    Django 2023年4月12日
    00
  • Django【性能提升篇】

    数据库部分 一、查询优化 二、持久化数据库连接   django1.6以后已经内置了数据库持久化连接,很多人使用PostgreSQL作为它们的线上数据库系统,而当我们连接PostgreSQL有时会显得很慢,这里我们可以进行优化。  没有持久化连接,每一个网站的请求都会与数据库建立一个连接。如果数据库不在本地,尽管网速很快,这也将花费20-75ms.   设置…

    Django 2023年4月12日
    00
  • python之Django自动化资产扫描的实现

    我将详细讲解一下“python之Django自动化资产扫描的实现”的完整攻略,过程中会包含两条示例说明。 1. 什么是Django自动化资产扫描 Django是一个基于Python的Web框架,它简单易用,自带ORM(对象关系映射)和模板系统,可以轻松构建Web应用。本文所讲的Django自动化资产扫描,是指使用Django框架实现网络资产扫描的过程。 2.…

    Django 2023年5月16日
    00
  • django-rest-framework框架 第四篇 认证Authentication

    认证Authentication 什么是身份认证 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或与其签名的令牌)关联的机制。 视图的最开始处运行身份验证 在权限和限制检查发生之前,以及在允许继续执行任何其他代码之前,始终在视图的最开始处运行身份验证。 身份验证方案总是定义为类的列表 REST框架尝试对列表中的每个类进行身份验证,并将成功身份验证的第…

    Django 2023年4月11日
    00
  • django中path和url函数的具体使用

    在Django中,path和url函数用于先匹配URL并执行相应视图函数。 path函数的使用 语法结构 path(route, view, kwargs=None, name=None) 参数说明 route:字符串类型,表示 URL 规则 view:处理请求的函数(视图函数), 每个视图都有一个函数视图对应 kwargs:字典类型,传递额外的参数给视图函…

    Django 2023年5月16日
    00
  • django自带User管理中添加自己的字段方法

    #coding=utf-8 from django.db import models from django.contrib.auth.models import User, make_password, check_password, Group, GroupManager from django.contrib.auth.admin import Use…

    Django 2023年4月10日
    00
  • Django启动报错:AttributeError: ‘str’ object has no attribute ‘decode’

    Exception in thread Thread-1: Traceback (most recent call last): File “/usr/local/lib/python3.7/threading.py”, line 917, in _bootstrap_inner self.run() File “/usr/local/lib/python3…

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