1. 程式人生 > >Django 快速搭建部落格 第三節(資料庫表設計)

Django 快速搭建部落格 第三節(資料庫表設計)

上一節我們已經能在pycharm下新建了blog app了, 這個時候,我們需要設計一下部落格的資料庫設計
  1. 關於資料庫表的設計,作為新手的我們並不需要要求懂太多稍微的懂一些也就可以了,畢竟資料庫也是需要有一定的功底的,

這裡我們依據部落格學習,將部落格表設計為三份:文章表,標籤表,分類表

結構類似於這樣子:
文章表.png

分類與標籤表.png

圖片也是截的,比較醜,這裡我按照我個人的理解,說一下:

每一篇文章都有對應的文章id,正文,發表時間,分類,標籤
這很合理,我們能理解,但是!每篇文章都有些分類,標籤,這樣會產生重複的資料,造成資源的浪費,所以我們把分類與標籤提取出來,單獨做成表,再跟文章相關聯起來。這就有了圖二的內容。

2 接下來我們開始在blog/models下進行資料庫表的建立(注意:因為django使用的orm系統(Object Relational Mapping ))
貼上這裡的三個表結構:

from django.db import models

# 專門用於處理網站使用者的註冊、登入等流程,User 是 Django 為我們已經寫好的使用者模型。
from django.contrib.auth.models import User
# Create your models here.


# 分類資料庫表
class Category(models.Model):
    name = models.CharField(max_length=100
) def __str__(self): return self.name # 標籤資料庫 class Tag(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name # 文章資料庫 class Post(models.Model): ''' 文章資料庫包含欄位:標題title 正文body 建立時間created_time 修改時間modified_time 摘要excerpt 分類category 標籤tag 作者author '''
title = models.CharField(max_length=100) body = models.TextField() created_time = models.DateTimeField() modified_time = models.DateTimeField() # blank 為true表示引數可以為空值za excerpt = models.CharField(max_length=200,blank=True) # ForeignKey,即一對多的關聯關係(一個分類下可以有多篇文章) category = models.ForeignKey(Category) # 而對於標籤來說,一篇文章可以有多個標籤,同一個標籤下也可能有多篇文章, # 所以我們使用 ManyToManyField,表明這是多對多的關聯關係。文章可以沒有標籤,所以blank可以為true tag = models.ForeignKey(Tag,blank=True) # 文章作者,這裡 User 是從 django.contrib.auth.models 匯入的。 # django.contrib.auth 是 Django 內建的應用,專門用於處理網站使用者的註冊、登入等流程, # User 是 Django 為我們已經寫好的使用者模型。 # 這裡我們通過 ForeignKey 把文章和 User 關聯了起來。 # 因為我們規定一篇文章只能有一個作者,而一個作者可能會寫多篇文章,因此這是一對多的關聯關係,和 Category 類似 author = models.ForeignKey(User) def __str__(self): return self.title

以後有機會會改善程式碼的顯示介面,如果支援的情況下,我們這裡再貼上程式碼的圖片

圖片.png

圖片.png

3 同步資料庫:

圖片.png

圖片.png

如果想知道django是如何操作資料庫的,可以使用命令:

圖片.png

這裡再貼一下使用資料庫的命令:

python manage.py makemigrations
python manage.py migrate

當我們看到Applying blog.0001_initial ....ok 就說明同步資料庫成功了。

python manage.py sqlmigrate blog 0001

django命令列知識:

1 同步資料庫: python manage.py makemigrations
python manage.py migrate

2 檢視django如何操作資料庫:python manage.py sqlmigrate blog 0001

以上就是建資料庫表的設計。