Django快速上手:从零构建数据库模型与管理后台
本文详细讲解如何在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创建第一个数据库模型的完整方法,希望能对读者有所帮助,欢迎继续支持本站内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













