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

下面是“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日

相关文章

  • Django项目创建及管理实现流程详解

    下面我将为你详细讲解“Django项目创建及管理实现流程详解”的完整攻略,包含两条示例说明。 步骤一:安装 Django 在开始创建 Django 项目之前,必须要先安装 Django,安装有两种方式: 1. 使用 pip 安装 Django 在命令行输入以下代码: pip install Django 即可安装最新版的 Django。 2. 手动安装 Dj…

    Django 2023年5月16日
    00
  • 详解Python的Django框架中的模版相关知识

    详解Python的Django框架中的模版相关知识 Django 是一个优秀的 Python Web 框架,内置了强大的模版引擎,方便开发者快速创建 Web 应用。本文将详细讲解 Django 中与模版相关的知识,包括模版的语法、模版继承和自定义模版标签等内容。同时,本文将提供两个示例来说明 Django 模版相关知识的应用。 模版的语法 Django 模版…

    Django 2023年5月16日
    00
  • Django-利用paginator模块实现分页

    Django专门提供了一个paginator模块,实现分页很easy。 下面的例子引用了django官方文档:https://docs.djangoproject.com/en/1.11/topics/pagination/ Paginator实例化需要2个参数,一个是待分页的对象list(需要实现count方法或者__len__方法),另一个是每页数量。 …

    Django 2023年4月10日
    00
  • django-admin 修改admin自带模版

    还不知道怎么指定修改每个页面,我就把把所有修改写在一个页面,通过url进行判断是否是是否显示修改内容,修改的是change_form.html,在admin里面可以找到 {% block object-tools %} {% if change %}{% if not is_popup %} <ul class=”object-tools”> {…

    Django 2023年4月12日
    00
  • Django Rest Framework之版本控制

    settings.py: REST_FRAMEWORK = { ‘DEFAULT_VERSION’: ‘v1’, # 默认版本 ‘ALLOWED_VERSIONS’: [‘v1’, ‘v2’], # 允许的版本 ‘VERSION_PARAM’: ‘version’ # URL中获取值的key }  urls.py: from django.conf.urls…

    2023年4月9日
    00
  • django之百度Ueditor富文本编辑器后台集成

    Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/   疑问:为什么要二次集成? 答案:因为百度富文本编辑器Ueditor没有对python的支持   步骤1:   在官网下载Ueditor的任意版本代码:http://ueditor.baidu…

    Django 2023年4月13日
    00
  • Python 做Django 项目遇到问题:Not Found: /c_hello(或/c_webskt/)

    出现如图所示的情况,一般先看端口是否被占用,或者更换端口号重新启动服务 查看指定端口占用情况netstat -aon | findstr 8000 查看对应PID进程tasklist|findstr “18836” 结束该进程taskkill /f /t /im CLodopPrint32.exe

    Django 2023年4月13日
    00
  • django基础之数据库操作方法(详解)

    下面是对“django基础之数据库操作方法(详解)”这篇文章的完整攻略: 1. 数据库连接设置 在django中默认使用sqlite作为数据库,可在settings.py文件中进行配置。也可以使用其他关系型数据库,如MySQL等,只需在settings.py中进行配置即可。 2. 数据库操作方法 2.1. 基本方法 Django提供了强大易用的ORM(Obj…

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