功能分析
对于初学者数据库设计是建站比较难的点,数据库表的产生是有网站功能决定的,但是不能有一个功能就创建一张表吧,所以我们在敲代码之前需要先设计数据的结构
我们先从功能上分析,看看这个博客网站需要建立哪些表,每个表中都需要什么字段
首先,最主要的是我们的博文表,名字可以直接叫做 article,这个表中,肯定要包括以下几点:
博文的标题、博文的内容、博文的发表时间、博文的修改时间、博文的分类、博文的阅读量、博文作者 等
博文的分类,一篇博文只能有一个分类,但是可以有多个标签,比如我现在写的这篇博文,可以分类到 Python 下,但是它可以有多个标签:Django、web开发...
考虑到每一篇博文都只能有一个分类,而一个分类下是可以包含很多博文的,因此分类与博文是一对多的关系,此时应当使用外键来进行关联。
而一篇博文可以有多个标签, 每个标签也可以包含多个博文,因此,标签与博文是多对多的关系。
所以这样下来,就需要设计三个数据表
- 分类表:
class Category(models.Model):
category_name = models.CharField('分类别名', max_length=15)
category = models.CharField('分类', max_length=15)
category_desc = models.CharField('分类描述', max_length=100, default='暂无描述')
def __str__(self):
return self.category
- 博文表:
class Article(models.Model):
author = models.ForeignKey(User, verbose_name='作者', on_delete=models.DO_NOTHING)
title = models.CharField('文章标题', max_length=50)
content = models.TextField('文章内容')
category = models.ForeignKey(Category, verbose_name='所处分类', on_delete=models.DO_NOTHING)
reading = models.PositiveIntegerField(default=0)
created_time = models.DateTimeField('创建时间', auto_now_add=True)
last_edited_time = models.DateTimeField('最后修改时间', auto_now=True)
- 最后是标签表
这里我们不需要自己设计,Django有个插件已经帮我们完成了这个任务
首先
python install django-taggit
然后在上面的博文表中加入tags字段
tags = TaggableManager()
在 settings.py中注册taggit
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'taggit',
]
这样我们的数据库就设计好了,这时候去生成迁移文件并迁移数据库
python manage.py makemigrations
python manage.py migrate
最后修改于2020年3月15日 18:25
©允许规范转载
Django Python版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://www.yangyingqi.com/6.html