models

项目表的创建,在models中创建

from django.db import models
from django.contrib.auth.models import AbstractUser #导入Django自带的auth表


# Create your models here.


# 用户表(继承django,里面的auth表)
class UserInfo(AbstractUser):
# 电话
phone = models.BigIntegerField(null=True)
# 头像
avatar = models.FileField(upload_to='avatar/', default='avatar/default.png')
# 创建时间
create_time = models.DateField(auto_now_add=True)
# 与个人站点表的一对一
blog = models.OneToOneField(to='Blog', null=True)


# 个人站点表
class Blog(models.Model):
# 站点名称
site_name = models.CharField(max_length=32)
# 站点标题
site_title = models.CharField(max_length=32)
# 站点样式
site_theme = models.CharField(max_length=32)


# 文章分类表
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=32)
# 一个站点可以拥有多个标签(站点与标签的一对多)
blog = models.ForeignKey(to='Blog', null=True)


# 文章表
class Article(models.Model):
# 文章标题
title = models.CharField(max_length=32)
# 简介
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):
# 点赞判断
is_up = models.BooleanField()
# 一个用户可以点多个赞(用户与点赞的一对多)
user = models.ForeignKey(to='UserInfo')
# 一篇文章可以背多次点赞(文章与点赞的一对多)
article = models.ForeignKey(to='Article')


# 评论表
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)
posted @ 2019-06-20 19:53  为此努力  阅读(106)  评论(0)    收藏  举报