day77---博客项目之表结构设计

settings.py

    AUTH_USER_MODEL = 'blog.UserInfo'

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
    """
    用户信息表
    """
    nickname = models.CharField(max_length=32, verbose_name='昵称')
    avatar = models.FileField(upload_to='avatars/', default="avatars/default.png", verbose_name='头像')
    c_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    u_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    blog = models.OneToOneField(to='Blog', to_field='id', null=True, verbose_name='关联博客信息')
    def __str__(self):
        return self.username
class Blog(models.Model):
    """
    博客信息表
    """
    b_name = models.CharField(max_length=64, verbose_name='博客名称')
    site = models.CharField(max_length=32, unique=True, verbose_name='博客地址')
    theme = models.CharField(max_length=32, verbose_name='博客主题')

    def __str__(self):
        return self.b_name
class Category(models.Model):
    """
    文章分类表
    """
    c_name = models.CharField(max_length=32, verbose_name='文章分类名称')
    blog = models.ForeignKey(to='Blog', to_field='id', null=True, verbose_name='关联博客')
    def __str__(self):
        return self.c_name
class Tag(models.Model):
    """
    文章标签表
    """
    t_name = models.CharField(max_length=32, verbose_name='文章标签名称')
    blog = models.ForeignKey(to='Blog', to_field='id', null=True, verbose_name='关联博客')
    def __str__(self):
        return self.t_name
class Article(models.Model):
    """
    文章信息表
    """
    title = models.CharField(max_length=64, verbose_name='文章标题')
    description = models.CharField(max_length=255, verbose_name='文章描述')
    comment_count = models.IntegerField(default=0, verbose_name='评论数')
    up_count = models.IntegerField(default=0, verbose_name='点赞数')
    down_count = models.IntegerField(default=0, verbose_name='踩灭数')
    c_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    u_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    user = models.ForeignKey(to='UserInfo', to_field='id', verbose_name='关联作者')
    article_detail = models.OneToOneField(to='ArticleDetail', to_field='id', verbose_name='关联文章内容详情')
    category = models.ForeignKey(to='Category', to_field='id', null=True, verbose_name='关联文章分类')
    tag = models.ManyToManyField(
        to='Tag',
        through='Article2Tag',
        through_fields=('article', 'tag'),
        verbose_name='关联文章标签'
    )
    def __str__(self):
        return self.title
class ArticleDetail(models.Model):
    """
    文章内容详情表
    """
    remarks = models.CharField(max_length=64, verbose_name='文章内容详情备注')
    content = models.TextField(verbose_name='文章内容详情')
    def __str__(self):
        return self.remarks
class Article2Tag(models.Model):
    """
    文章与标签关联表
    """
    article = models.ForeignKey(to="Article", to_field='id', verbose_name='文章')
    tag = models.ForeignKey(to="Tag", to_field='id', verbose_name='标签')
    class Meta:
        unique_together = ('article', 'tag')
class Comment(models.Model):
    """
    文章评论表
    """
    user = models.ForeignKey(to='UserInfo', to_field='id', verbose_name='评论用户')
    content = models.CharField(max_length=255, verbose_name='评论内容')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='评论时间')
    article = models.ForeignKey(to='Article', to_field='id', verbose_name='评论文章')
    parent_comment = models.ForeignKey(to='Comment', to_field='id', null=True, verbose_name='父评论ID')
    def __str__(self):
        return self.content
class ArticleUpDown(models.Model):
    """
    文章点赞踩灭表
    """
    user = models.ForeignKey(to='UserInfo', to_field='id', null=True, verbose_name='点赞或踩灭用户')
    article = models.ForeignKey(to='Article', to_field='id', null=True, verbose_name='点赞或踩灭文章')
    up_down = models.BooleanField(default=True, verbose_name='点赞或踩灭类型')
    class Meta:
        unique_together = ('user', 'article')
    def __str__(self):
        return self.article
posted @ 2018-03-01 09:34  _岩哥  阅读(168)  评论(0)    收藏  举报