Django快速上手:从零构建数据库模型与管理后台

Dylan
Dylan
发布时间:2026-10-13| 5人浏览过
原创

本文详细讲解如何在Django项目中从零开始创建第一个数据库模型。内容涵盖执行migrate命令初始化数据库表、编写Model类定义字段与关系、通过makemigrations生成迁移文件,以及利用shell进行数据增删查改。此外,还介绍了如何创建超级用户并配置Admin后台,实现可视化的数据管理。

Django数据库初始化与模型定义

Django框架内置了SQLite数据库支持,对于初学者而言,利用这一特性进行初步学习和开发是一个便捷的选择。

构建数据库涉及建表等基础工作,在执行具体操作前,需先在命令行终端执行初始化命令。


python manage.py migrate

该命令类似于打包安装过程,它依据mysite/settings.py中的配置信息,自动创建并安装所需的数据库基础表结构。

接下来,需要构建Model层,具体操作是修改demo/model.py文件。


from django.db import models
classQuestion(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
classChoice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

Model层的核心内容包括定义数据表对应的对象、确定各字段的变量类型,以及配置外键关联信息。

为了使Django识别并使用该模型,需对helloworld/setting.py进行配置修改。


INSTALLED_APPS =[
'demo.apps.DemoConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

主要操作是在INSTALLED_APPS列表中添加第一行内容,该配置位于demo/apps目录下。其目的是告知Django框架存在名为demo的应用程序。

配置完成后,在命令行终端执行迁移生成命令。

生成迁移文件与同步数据库


python manage.py makemigrations demo

执行后可见在demo/migrations/0001_initial.py文件中生成了相应的迁移代码。

继续运行该迁移脚本,即可完成数据库表的实际创建工作。


python manage.py sqlmigrate demo 0001

随后再次执行migrate命令,将之前定义的Model正式同步至数据库表中。


python manage.py migrate

第四步涉及进入Python Django的交互式Shell环境,需执行特定命令启动。

Shell交互与数据操作


python manage.py shell

在此环境中,可以通过命令行直接对数据库进行操作。

首先引入之前创建好的Model类。


from demo.models importQuestion,Choice

该命令用于打印出所有Question对象的数据列表。


Question.objects.all()

接着,创建一个Question对象(即插入一条数据)。


from django.utils import timezone
q =Question(question_text="What's new?", pub_date=timezone.now())
q.save()
q.id
q.question_text
q.pub_date
q.question_text = "What's up?"
q.save()
Question.objects.all()

第五步,在polls/models.py文件中添加以下代码以完善模型定义。


from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible# only if you need to support Python 2
classQuestion(models.Model):
# ...
def __str__(self):
return self.question_text
@python_2_unicode_compatible# only if you need to support Python 2
classChoice(models.Model):
# ...
def __str__(self):
return self.choice_text
import datetime
from django.db import models
from django.utils import timezone
classQuestion(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now()- datetime.timedelta(days=1)

其中的__str__()方法至关重要,其功能类似于Java中POJO对象的toString()方法,用于返回对象的字符串表示。

完成上述步骤后,即可在数据库中进行多种操作。在Shell中输入相关代码,即可执行对数据库的增、删、查、改操作。


from polls.models importQuestion,Choice
Question.objects.all()
Question.objects.filter(id=1)
Question.objects.filter(question_text__startswith='What')
from django.utils import timezone
current_year = timezone.now().year
Question.objects.get(pub_date__year=current_year)
Question.objects.get(id=2)
Question.objects.get(pk=1)
q =Question.objects.get(pk=1)
q.was_published_recently()
q =Question.objects.get(pk=1)
q.choice_set.all()
q.choice_set.create(choice_text='Not much', votes=0)
q.choice_set.create(choice_text='The sky', votes=0)
c = q.choice_set.create(choice_text='Just hacking again', votes=0)
c.question
q.choice_set.all()
q.choice_set.count()
Choice.objects.filter(question__pub_date__year=current_year)
c = q.choice_set.filter(choice_text__startswith='Just hacking')
c.delete()

配置Django Admin管理后台。

Django内置的管理端可用于管理站点内容、分配账户权限等任务。

在命令行终端运行以下脚本以创建管理员账户。

配置Admin后台与管理界面


python manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password:**********
Password(again):*********
Superuser created successfully.

启动Web服务器。


python manage.py runserver 8081

通过浏览器访问指定的链接地址。

http://127.0.0.1:8081/admin/

登录界面截图。

管理后台界面截图。

在demo/admin.py文件中添加代码以注册需要管理的对象。


from django.contrib import admin
from.models importQuestion
admin.site.register(Question)

刷新页面后,即可看到新增的对象管理入口。

点击Questions链接进入详情页面。

至此,即可在图形化界面中方便地执行数据的增删查改操作。

以上即为Python学习笔记中关于Django创建第一个数据库模型的完整方法,希望能对读者有所帮助,欢迎继续支持本站内容。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。