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、關係表圖