Django框架中模型的用法

  • Post category:http

下面是关于“Django框架中模型的用法”的完整攻略:

什么是Django框架中的模型模块

在Django框架中,每个模型都对应于一张数据库中的表。在Django框架中,我们可以通过模型与数据库进行交互,例如创建、修改、删除、检索表中数据等等。Django提供了ORM(Object-Relational Mapping,对象关系映射)技术来处理应用程序中的数据模型和数据库管理。

在Django中创建模型

在Django框架中,定义模型的方式非常方便:

  1. 在app目录中创建一个models.py文件
    from django.db import models

    class Person(models.Model):
      name = models.CharField(max_length=20)
      age = models.IntegerField()

以上代码中,我们定义了一个Person的模型,它包含两个属性:name和age,并且name类型为CharField,最大长度为20,age为整型。

  1. 最后,运行如下命令,Django会根据models.py文件中的类定义自动创建相应的数据库表:
    python manage.py makemigrations
    python manage.py migrate

如上,我们完成了一个Person对象的定义和创建相应数据库表的过程。

模型的使用

  1. 新增数据
# 导入模型类
from .models import Person

# 创建对象
person = Person(name='小明', age=18)

# 保存对象
person.save()
  1. 查询数据
from .models import Person

# 查询年龄大于15的Person对象
persons = Person.objects.filter(age__gt=15)

以上我们通过Django的ORM技术,便可以非常容易地创建一个模型,并添加数据,查询数据。

举例说明

现在我们来看一个更加具体的例子,以Student对象为例。假定我们创建了一个app,名为student,下面我们来创建它的models.py文件:

    from django.db import models

    class Course(models.Model):
      name = models.CharField(max_length=50)

    class Student(models.Model):
      name = models.CharField(max_length=50)
      age = models.IntegerField()
      courses = models.ManyToManyField(Course)

      def __str__(self):
        return self.name

我们定义了一个Student模型,它有三个属性:name、age和courses。name和age的含义与上文中提到的一致。courses为多对多的外键关联表Course。我们在Student模型中定义了__str__方法,以便在后续使用的时候能够清晰地显示对象的信息。

下面我们来具体演示与该模型相关的操作:

  1. 创建一个课程表
    course1 = Course(name='语文')
    course2 = Course(name='数学')
    course3 = Course(name='英语')
  1. 创建两个学生对象并分别选上几门课
    student1 = Student(name='小明', age=18)
    student1.save()
    student1.courses.add(course1, course2)

    student2 = Student(name='小芳', age=19)
    student2.save()
    student2.courses.add(course2, course3)
  1. 查询学生的选课情况
    students = Student.objects.all()

    for student in students:
        print(student.name, '选修的课程:')
        for course in student.courses.all():
            print('\t', course.name)

最终结果如下:

    小明 选修的课程:
        语文
        数学
    小芳 选修的课程:
        数学
        英语

以上就是Django中模型的用法的详细攻略,希望能帮助到你。