表思维导图:

 

数据库:表

from django.db import models
from django.conf import settings
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserInfo(AbstractUser): #settings :AUTH_USER_MODEL ="项目名称.UserInfo"
'''用户信息表'''
nid = models.BigAutoField(primary_key=True)
nickname =models.CharField(max_length=32,verbose_name="昵称",unique=True)
tel = models.IntegerField(verbose_name="电话",unique=True,null=True,blank=True)
email = models.CharField(max_length=64,verbose_name="邮箱")
avatar = models.FileField(verbose_name="头像",upload_to="avatar",default="/avatar/default.png")
create_time = models.DateTimeField(verbose_name="创建时间",auto_now_add=True) class Meta:
verbose_name_plural = "用户信息表"
def __str__(self):
return self.username class Article(models.Model):
'''
文章表
'''
title = models.CharField(max_length=64,verbose_name="文章标题")
summary = models.CharField(max_length=244, verbose_name="文章概要")
create_time = models.DateTimeField(verbose_name="创建时间",auto_now_add=True)
update_time = models.DateTimeField(verbose_name="修改时间",auto_now=True)
poll_count = models.IntegerField(verbose_name="点赞数",default=0)
comment_count = models.IntegerField(verbose_name="评论数",default=0)
read_count = models.IntegerField(verbose_name="阅读数",default=0)
# is_essence = models.BooleanField(verbose_name="是否精华",default=0)
# is_top = models.BooleanField(verbose_name="是否置顶",default=0) user = models.ForeignKey(to="UserInfo",verbose_name="所属作者",null=True,blank=True)
classify = models.ForeignKey(to="Classfication",verbose_name="所属类别",null=True,blank=True)
tags = models.ManyToManyField(to="Tag",through="Article2tag",through_fields=('article', 'tag'),verbose_name="所属标签")
type_choices = [
(1,"编程语言"),
(2,"软件设计"),
(3,"前端系列"),
(4,"数据库"),
(5,"操作系统")
]
artcle_type_id = models.IntegerField(choices=type_choices,default=None)
class Meta:
verbose_name_plural = "文章表"
def __str__(self):
return self.title class Article_detail(models.Model):
'''文章细节表'''
article = models.OneToOneField(to="Article",verbose_name="所属文章")
content =models.TextField(max_length=400,verbose_name="文章内容") class Meta:
verbose_name_plural = "文章细节表" class Tag(models.Model):
'''标签表'''
name = models.CharField(max_length=32,verbose_name="标签名")
blog = models.ForeignKey(to="Blog",verbose_name="所属博客")
class Meta:
verbose_name_plural = "标签表" class Article2tag(models.Model):
article = models.ForeignKey(verbose_name="文章",to="Article")
tag = models.ForeignKey(verbose_name="标签",to="Tag")
class Meta:
'''联合唯一'''
unique_together = [
("article","tag")
] class Comment(models.Model):
'''评论表'''
time = models.DateTimeField(verbose_name="评论时间",auto_now_add=True)
content = models.CharField(max_length=265,verbose_name="评论内容")
up_count = models.IntegerField(default=0)
user = models.ForeignKey(to="UserInfo",verbose_name="评论人",null=True,blank=True)
article = models.ForeignKey(to="Article",verbose_name="评论文章",null=True,blank=True)
farther_comment = models.ForeignKey(to="Comment",verbose_name="父级评论",null=True,blank=True)
# farther_comment = models.ForeignKey("self",verbose_name="父级评论",null=True,blank=True) class Meta:
verbose_name_plural = "评论表" class Article_poll(models.Model):
'''文章点赞表'''
time = models.DateTimeField(verbose_name="点赞时间",auto_now_add=True)
article = models.ForeignKey(to="Article",verbose_name="点赞文章",null=True,blank=True) #一个文章可以有多个赞
user = models.ForeignKey(to="UserInfo",verbose_name="点赞人",null=True,blank=True)
# is_positive = models.BooleanField(default=1,verbose_name="点赞或踩") class Meta:
'''联合唯一'''
unique_together = ("user", "article",)
verbose_name_plural = "文章点赞表" class Comment_poll(models.Model):
'''评论点赞表'''
time=models.DateTimeField(verbose_name="点赞时间",auto_now_add=True)
# is_positive = models.BooleanField(verbose_name="点赞或踩",default=1)
user = models.ForeignKey(to="UserInfo",verbose_name="点赞用户",null=True,blank=True)
comment = models.ForeignKey(to="Comment",verbose_name="点赞所属评论",null=True,blank=True) #一个评论可以有多个赞 class Meta:
'''联合唯一'''
unique_together = ("user","comment",)
verbose_name_plural = "评论点赞表" class Blog(models.Model):
'''个人站点表'''
title = models.CharField(max_length=32,verbose_name="个人博客标题")
url = models.CharField(max_length=64,verbose_name="路径",unique=True)
theme = models.CharField(max_length=32,verbose_name="博客主题")
user = models.OneToOneField(to="UserInfo", verbose_name="所属用户")
class Meta:
'''通过admin录入数据的时候个中文显示'''
verbose_name_plural = "个人站点表" def __str__(self):
return self.title class Classfication(models.Model):
'''博主个人文章分类表'''
title = models.CharField(max_length=32, verbose_name="分类标题")
blog = models.ForeignKey(to="Blog",verbose_name="所属博客") class Meta:
verbose_name_plural = "分类表"

注释:

十张表:

    用户表(userinfo):
nickname(用户昵称)
telephone(手机号)
avatar(头像)
create_time(创建时间)
站点表(Blog):
title(博客标题)
url(路径)
theme(博客主题)
user和用户表关系(one2one)
文章表(Article):
title(标题)
desc(内容)
read_count(文章阅读量)
comment_count(文章评论量)
up_count(文章置顶)
down_count(文章置末尾)
create_time(文章创建时间)
category(类型)和分类表(fk)
user(所属用户)和用户表(fk)
tags(标签)和标签表(m2m)
文章详情表(ArticleDetail):
  content(文章类容)
  article(所属文章)和文章表示(one2one)
   文章分类表(Category):
title(文章标题)
blog(fk)
   评论表(Comment):
          content(评论语)
         create_time(创建时间)
    up_count(评论量)
        user(评论者)和用户(fk)
         article(评论文章)和文章表(fk)
         parent_comment(父级评论)自关联
  评论点赞表(CommentUp):
         user(点赞的用户)和用户表(fk)
        comment(点赞评论)和评论表(fk)
   文章点赞表(ArticleUp):
         user(点赞的用户)和用户表(fk)
         comment(被点赞文章)和文章表(fk)
  标签表(Tag):
        title(标签名称)
        bolg(所属博客)和博客表(fk)
  文章和标签表(Article2Tag):
        article(文章)和文章表(fk)
       tag(标签)和标签表(fk)
 
 
 
 
 
 
 

blog建表操作的更多相关文章

  1. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  2. centos7下oracle11g详细的安装与建表操作

    一.oracle的安装,在官网下载oracle11g R2 1.在桌面单击右键,选择“在终端中打开”,进入终端 输入命令:su 输入ROOT密码: 创建用户组oinstall:groupadd oin ...

  3. Apache Hive 建表操作的简单描述

    客户端连接hive [root@bigdata-02 bin]# ./beeline Beeline version by Apache Hive beeline: Connecting : Ente ...

  4. 5月8日 python学习总结 mysql 建表操作

    一 .创建表的完整语法 create table 表名( 字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]); 解释: 类型:使用限制字 ...

  5. Mac下安装MySQL、Workbench以及建数据库建表最基础操作

    刚用上Mac,什么都不懂,加之以前还没有用过mysql,就想着在Mac上装一个mysql来自己玩,奈何,在网上找了大半天,没有一个干货!愤怒!下面是我安装的过程,希望能帮到和我情况差不多的朋友   首 ...

  6. 测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作

    flask-SQLAlchemy是在原生SQLAlchemy的基础之上做了一层封装,安装flask-SQLAlchemy会自动安装SQLAlchemy 安装 传统的sql建表建字段 通过flask-S ...

  7. (转载)用C#实现MySQL建库及建表

    最近做一个项目,为了方便用户使用,希望可以在系统初始化的时候,自动实现MySQL数据库的建库和建表操作.在网上查了很多资料都没有找到合适的,偶尔在一个国外网站上看到了相关的内容,特把实现方法整理如下: ...

  8. Navicat安装教程、建表教程

    1.安装教程: 转自:https://www.jianshu.com/p/5f693b4c9468 2.使用教程(建表操作): https://jingyan.baidu.com/article/e6 ...

  9. MySQL数据库入门(建库和建表)--陈远波

    建库.建表 1.建库 (1)SQL语句命令建库: Create database数据库名称  (该方法创建的数据库没有设置编码乱码) 1 2 3 4 5 -- 创建数据库时,设置数据库的编码方式 -- ...

随机推荐

  1. IntelliJ IDEA(五) :Settings(中)

    上篇介绍了Settings中的Appearance & Behavior和Keymap,这篇继续,将介绍Editor,Plugins,Version Control. 一.Editor(编辑) ...

  2. mybatis if-else(写法)

    mybaits 中没有else要用chose when otherwise 代替 范例一 <!--批量插入用户--> <insert id="insertBusinessU ...

  3. Mac环境下实现alias重命名命令(永久生效)

    Mac环境下实现alias重命名命令 iOS Dev在使用Xcode完成代码编写后,可能需要上传至第三方分发应用给测试人员进行相关测试,比如蒲公英.FIR. 效率较高的上传方式是借助于Fastlane ...

  4. 使用WebEx录制视频并转换为MP4

    1.下载并安装WebEx http://www.question-defense.com/wp-content/uploads/2010/05/ateditor-version-3.0.zip 2.打 ...

  5. 《算法 (第4版)》【PDF】下载

    <算法 (第4版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196349 (第4版)>[PDF]"  TITL ...

  6. 《编程人生:15位软件先驱访谈录》【PDF】下载

    <编程人生:15位软件先驱访谈录>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382231 内容简介 本书适合所有程序员,也适合 ...

  7. 小白的Python之路 PEP8 代码风格

    转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...

  8. 【java】实现一个简单的正则:判断一个字符串是否全由数字组成

    package 正则; public class TestIsNum { public static void main(String[] args) { String s1="abc&qu ...

  9. 代码生成利器:IDEA 强大的 Live Templates(转)

    代码生成利器:IDEA 强大的 Live Templates - 文章 - 伯乐在线http://blog.jobbole.com/110607/ 前言 Java 开发过程经常需要编写有固定格式的代码 ...

  10. C# TreeView 控件的综合使用方法

    1.概述 该篇文章开发使用的语言c#,环境visualstudio2010,sql数据库.主要内容包括: (1)treeView控件添加根节点.子节点的基本方法,节点的删除. (2)把treeView ...