下面是关于“Django框架中模型的用法”的完整攻略:
什么是Django框架中的模型模块
在Django框架中,每个模型都对应于一张数据库中的表。在Django框架中,我们可以通过模型与数据库进行交互,例如创建、修改、删除、检索表中数据等等。Django提供了ORM(Object-Relational Mapping,对象关系映射)技术来处理应用程序中的数据模型和数据库管理。
在Django中创建模型
在Django框架中,定义模型的方式非常方便:
- 在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为整型。
- 最后,运行如下命令,Django会根据models.py文件中的类定义自动创建相应的数据库表:
python manage.py makemigrations
python manage.py migrate
如上,我们完成了一个Person对象的定义和创建相应数据库表的过程。
模型的使用
- 新增数据
# 导入模型类
from .models import Person
# 创建对象
person = Person(name='小明', age=18)
# 保存对象
person.save()
- 查询数据
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__方法,以便在后续使用的时候能够清晰地显示对象的信息。
下面我们来具体演示与该模型相关的操作:
- 创建一个课程表
course1 = Course(name='语文')
course2 = Course(name='数学')
course3 = Course(name='英语')
- 创建两个学生对象并分别选上几门课
student1 = Student(name='小明', age=18)
student1.save()
student1.courses.add(course1, course2)
student2 = Student(name='小芳', age=19)
student2.save()
student2.courses.add(course2, course3)
- 查询学生的选课情况
students = Student.objects.all()
for student in students:
print(student.name, '选修的课程:')
for course in student.courses.all():
print('\t', course.name)
最终结果如下:
小明 选修的课程:
语文
数学
小芳 选修的课程:
数学
英语
以上就是Django中模型的用法的详细攻略,希望能帮助到你。