from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. # 用戶表 class UserInfo(AbstractUser): phone = models.BigIntegerField(null=True) create_time = models.DateField(auto_now_add=True) # 該字段會將接收的文件自動放到avatar文件夾下,只存放該文件的路徑 avatar = models.FileField(upload_to='avatar') blog = models.OneToOneField(to='Blog', null=True) # 我的站點表 class Blog(models.Model): site_name = models.CharField(max_length=32) site_title = models.CharField(max_length=64) # 我的站點的樣式文件,存放樣式文件的路徑 theme = models.CharField(max_length=64) # 分類表 class Category(models.Model): name = models.CharField(max_length=32) blog = models.ForeignKey(to='Blog', null=True) # 標籤表 class Tag(models.Model): name = models.CharField(max_length=64) blog = models.ForeignKey(to='Blog', null=True) # 文章表 class Article(models.Model): title = models.CharField(max_length=64) desc = models.CharField(max_length=255) # 內容爲大段文本內容 content = models.TextField() create_time = models.DateField(auto_now_add=True) # 查詢優化 # 評論數 點贊數 點踩數 comment_num = models.IntegerField() up_num = models.IntegerField() down_num = models.IntegerField() blog = models.ForeignKey(to='Blog', null=True) category = models.ForeignKey(to='Category', null=True) tags = models.ManyToManyField(to='Tag', through='Article2Tags', through_fields=('article', 'tag')) class Article2Tags(models.Model): article = models.ForeignKey(to='Article') tag = models.ForeignKey(to='Tag') # 點踩點贊表 class UpAndDown(models.Model): user = models.ForeignKey(to='UserInfo') article = models.ForeignKey(to='Article') # 是點贊 1 仍是點踩 0 is_up = models.BooleanField() # 評論表 class Comment(models.Model): user = models.ForeignKey(to='UserInfo') article = models.ForeignKey(to='Article') content = models.CharField(max_length=255) create_time = models.DateField(auto_now_add=True) parent = models.ForeignKey(to='self', null=True)