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日

相关文章

  • python3.6+linux服务器+django1.11连接MYSQL数据库

    1.django创建一个项目,在项目的settings.py中配置Mysql 1 DATABASES = { 2 ‘default’: { 3 ‘ENGINE’: ‘django.db.backends.mysql’, 4 ‘NAME’: ‘test’, 5 ‘USER’: ‘admin’, 6 ‘PASSWORD’:’admin’, 7 ‘HOST’:’1…

    Django 2023年4月13日
    00
  • django基础知识之POST属性:

    QueryDict类型的对象 包含post请求方式的所有参数 与form表单中的控件对应 问:表单中哪些控件会被提交? 答:控件要有name属性,则name属性的值为键,value属性的值为键,构成键值对提交 对于checkbox控件,name属性一样为一组,当控件被选中后会被提交,存在一键多值的情况 键是开发人员定下来的,值是可变的 示例如下 定义视图po…

    Django 2023年4月12日
    00
  • CentOS7下部署Django项目详细操作步骤

    详细步骤(下面步骤都是ROOT权限执行): 一、更新系统软件包yum update -y 二、安装软件管理包和可能使用的依赖 yum -y groupinstall “Development tools” yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel s…

    Django 2023年4月12日
    00
  • django开发中遇到的问题

    今天在做购物车的时候,在做添加购物车功能时,先要判断当前用户的购物车下有没有当前商品,如果有的话就把商品的数量新增传到后台的数量个。 在当前用户的购物车中存在该商品的情况下,在更新商品数量的时候由于粗心出了问题,在更新完商品数量之后忘记了提交保存,导致商品数量不能更新,找bug找了挺长时间,所以写下来 为了提示一下自己。 1 userID=request.s…

    Django 2023年4月13日
    00
  • Django框架模板的使用方法示例

    下面是本文档的详细讲解“Django框架模板的使用方法示例”的完整攻略,其中包含两条示例说明: Django框架中模板的基本使用方法 创建Django项目 首先我们需要使用Django创建一个新的项目: django-admin startproject mysite 创建Django应用 接着我们需要在Django项目中创建一个应用程序: python m…

    Django 2023年5月16日
    00
  • python27+django1.9添加api

    我们进入Python的交互 shell 并使用Django提供的API。要进入Python shell,使用python manage.py shell 使用这个而不是简单的输入”python”,是因为 manage.py 会帮你创建项目的环境。“创建项目环境”包括两件事: 把polls添加到sys.path里。为了灵活性,Django中的模块通过加点的路径…

    Django 2023年4月10日
    00
  • python Django问题:TemplateDoesNotExist at /index/

       原因:发现Django1.8,设置要加载模板的路径时,不是直接自己定义一个TEMPLATE_DIR,然后给它赋值 解决:settings.py配置文件中添加红框代码   BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ‘DIRS’: [os.path.join…

    Django 2023年4月11日
    00
  • django查询常用操作符及models和admin的写法

    以Publisher、Author、Book的model为例子 #coding=utf-8 from django.db import models # Create your models here. class Publisher(models.Model): name=models.CharField(verbose_name=”出版社”,max_le…

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