Django 模型(Models)与数据库入门教程:课设必备的数据库设计基础
在上一节中,我们创建了第一个 Django 项目,并完成了基本的视图和模板配置。接下来,学习如何用 Django 的模型(Models)定义数据库结构,并让它帮你自动生成数据库表。这是课设和毕设中数据库设计的核心内容。
一、什么是 Django 模型?
Django 模型是用 Python 类定义数据库表的结构,每个模型对应数据库中的一张表,模型的属性对应表的字段。Django 提供了强大的 ORM(对象关系映射)功能,免去手写 SQL 建表语句的烦恼。
二、创建第一个模型
2.1 编辑 blog/models.py
打开 blog/models.py
文件,添加一个简单的学生模型:
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=100, verbose_name='姓名')
student_id = models.CharField(max_length=20, unique=True, verbose_name='学号')
email = models.EmailField(verbose_name='邮箱')
enrolled_date = models.DateField(verbose_name='入学日期')
def __str__(self):
return f"{self.name} ({self.student_id})"
解释:
CharField
用于字符类型字段,max_length
必填;unique=True
保证学号唯一;EmailField
自动验证邮箱格式;DateField
存储日期;__str__
方法定义对象的字符串表示,方便管理后台显示。
三、将模型同步到数据库
3.1 生成迁移文件
python manage.py makemigrations blog
Django 会检测到新模型,生成迁移脚本。这里注意makemigrations后面要加上我们在上一步中创建的app名称。
3.2 应用迁移,创建数据表
python manage.py migrate
执行后,Django 会在数据库中创建对应的 blog_student
表。
四、注册模型到后台管理(Django Admin)
方便后续数据管理和课设演示。
4.1 编辑 blog/admin.py
from django.contrib import admin
from .models import Student
admin.site.register(Student)
4.2 创建超级管理员账号
python manage.py createsuperuser
按提示输入用户名、邮箱和密码。
4.3 启动服务器并登录后台
访问 http://127.0.0.1:8000/admin,使用管理员账号登录,即可管理 Student
表数据。
五、使用 Django Shell 测试模型操作
python manage.py shell
进入交互环境后:
from blog.models import Student
# 新建记录
s = Student(name='张三', student_id='20250001', email='zhangsan@example.com', enrolled_date='2023-09-01')
s.save()
# 查询记录
students = Student.objects.all()
print(students)
# 过滤查询
student = Student.objects.get(student_id='20250001')
print(student.name)
六、小结
- Django 模型通过 Python 类定义数据库表;
- 通过
makemigrations
和migrate
自动生成并执行建表语句; - 注册到 Admin 后台方便数据管理;
- Django Shell 提供快速测试数据增删改查的环境。
七、课设建议
- 根据课设需求设计合理的模型字段和关系(外键、ManyToMany 等);
- 设计前最好先画好 ER 图,有助于梳理数据结构;
- 利用 Admin 后台快速录入测试数据,方便演示;
- 写好模型的
__str__
方法,提升后台显示体验。
如果你想了解更多 Django 模型高级用法(如关联关系、信号、性能优化等),欢迎留言,我会继续为你输出后续内容。
如果本文对你有帮助,别忘了点赞关注支持我,带你从 Django 小白变高手!