Django博客項目之表關係設計

1、須要建立的表以及表之間的關係
python

一、User(用戶信息表)django

User表和Blog表是一對一關係,即一個用戶對應一個我的站點ide

二、Blog(我的站點表)spa

三、Category(文章分類表)設計

Blog和Category表是一對多關係,即一個站點能夠有多個分類,可是一個分類只屬於一個站點blog

四、Tag(文章標籤表)繼承

Blog和Tag表是一對多關係,即一個站點能夠有多個標籤,可是一個標籤只屬於一個站點pdo

五、Article(文章表)get

User和Article表是一對多關係,即一個用戶能夠有多篇文章,可是一篇文章只屬於一個用戶it

Category和Article表是一對多關係,即一種分類能夠有多篇文章,可是一篇文章只屬於一種分類

Tag和Article表是多對多關係,即一個標籤能夠屬於多篇文章,一篇文章能夠有多個標籤

六、Article_detail(文章詳情表)

Article表Article_detail表是一對一關係,即每一篇文章對應一個文章詳情

七、Article_updown(文章點贊踩滅表)

Article表和Article_updown表是一對多關係,一篇文章能夠有多個點贊踩滅,可是一個點贊踩滅只屬於一篇文章

八、Comment(評論表)

Article表和Comment表是一對多關係,一篇文章能夠有多個評論,可是一個評論只屬於一篇文章


2、表關係設計的幾個注意內容

一、關於用戶表繼承

由於在makemigrations和migrate的時候會自動生成auth_user表,能夠繼承自定義的auth_user表,而後在表裏增長一些咱們須要的字段
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
    pass
要是這樣用繼承的話須要在settings中配置一下:
AUTH_USER_MODEL ="應用名稱.UserInfo"


二、關於頭像的相關設置

avatar = models.FileField(verbose_name="頭像",upload_to="avatar",default="/avatar/default.png")
upload_to:上傳到的具體位置
default:默認位置


三、自定義多對多關係的第三張表

class Tag(models.Model):
    pass
class Article(models.Model):
    tags = models.ManyToManyField(
        to="Tag",
        through="article2tag",
        through_fields=('article', 'tag')
    )  #through="article2tag"表示使用自定義的Article2tag表而不使用Django生成的表,through_fields=('article', 'tag')至關於給這兩個字段關聯
class Article2tag(models.Model):
    article = models.ForeignKey(verbose_name="文章",to="Article")
    tag = models.ForeignKey(verbose_name="標籤",to="Tag")
    class Meta:
        unique_together = [
            ("article","tag")                   #"article"和"tag"兩個字段聯合惟一
        ]

四、自關聯的兩種表示方式,假設爲null的時候是文章贊

(1)第一種方式

farther_comment = models.ForeignKey(to="Comment",verbose_name="父級評論",null=True,blank=True)

(2)第二種方式

farther_comment = models.ForeignKey("self",verbose_name="父級評論",null=True,blank=True)


3、關係表圖

list.png

相關文章
相關標籤/搜索