1.BBS需求分析和创建ORM

  1. 1. 需要哪些表
    1. UserInfo
    1. username
    2. password
    3. avatar #头像图片
    2. 文章表:
    title
    publish_date
    desc
    author
    详细内容 一对一关联 文章详情表
    3. 文章详情表
    info
    4. 评论表
    1. user
    2. 时间
    3. 内容
    4. 关联的文章
    5. 是谁的子评论
    5. 标签
    标签名
    和文章 多对多
    6. 分类
    分类名
    和文章的关联关系 多对多/一对多
    7. 点赞
    是赞还是踩
    文章
    谁点的 关联user
    2.创建ORM
  1. from django.contrib.auth.models import AbstractUser
  2. class UserInfo(AbstractUser):
  3. """
  4. 用户信息表
  5. """
  6. nid = models.AutoField(primary_key=True)
  7. phone = models.CharField(max_length=, null=True, unique=True)
  8. avatar = models.FileField(upload_to="avatars/", default="avatars/default.png", verbose_name="头像")
  9. create_time = models.DateTimeField(auto_now_add=True)
  10. blog = models.OneToOneField(to="Blog", to_field="nid", null=True)
  11. def __str__(self):
  12. return self.username
  13.  
  14. class Meta:
  15. verbose_name = "用户"
  16. verbose_name_plural = verbose_name
  17.  
  18. class Blog(models.Model):
  19. """
  20. 博客信息
  21. """
  22. nid = models.AutoField(primary_key=True)
  23. title = models.CharField(max_length=) # 个人博客标题
  24. site = models.CharField(max_length=, unique=True) # 个人博客后缀
  25. theme = models.CharField(max_length=) # 博客主题
  26.  
  27. def __str__(self):
  28. return self.title
  29.  
  30. class Meta:
  31. verbose_name = "blog站点"
  32. verbose_name_plural = verbose_name
  33.  
  34. class Category(models.Model):
  35. """
  36. 个人博客文章分类
  37. """
  38. nid = models.AutoField(primary_key=True)
  39. title = models.CharField(max_length=) # 分类标题
  40. blog = models.ForeignKey(to="Blog", to_field="nid") # 外键关联博客,一个博客站点可以有多个分类
  41.  
  42. def __str__(self):
  43. return self.title
  44. ##后台中用中文显示##
  45. class Meta:
  46. verbose_name = "文章分类"
  47. verbose_name_plural = verbose_name
  48.  
  49. class Tag(models.Model):
  50. """
  51. 标签
  52. """
  53. nid = models.AutoField(primary_key=True)
  54. title = models.CharField(max_length=) # 标签名
  55. blog = models.ForeignKey(to="Blog", to_field="nid") # 所属博客
  56.  
  57. def __str__(self):
  58. return self.title
  59.  
  60. class Meta:
  61. verbose_name = "标签"
  62. verbose_name_plural = verbose_name
  63.  
  64. class Article(models.Model):
  65. """
  66. 文章
  67. """
  68. nid = models.AutoField(primary_key=True)
  69. title = models.CharField(max_length=, verbose_name="文章标题") # 文章标题
  70. desc = models.CharField(max_length=) # 文章描述
  71. create_time = models.DateTimeField(auto_now_add = True) # 创建时间 --> datetime()
  72.  
  73. # 评论数
  74. comment_count = models.IntegerField(verbose_name="评论数", default=)
  75. # 点赞数
  76. up_count = models.IntegerField(verbose_name="点赞数", default=)
  77. # 踩
  78. down_count = models.IntegerField(verbose_name="踩数", default=)
  79.  
  80. category = models.ForeignKey(to="Category", to_field="nid", null=True)
  81. user = models.ForeignKey(to="UserInfo", to_field="nid")
  82. tags = models.ManyToManyField( # 中介模型
  83. to="Tag",
  84. through="Article2Tag",
  85. through_fields=("article", "tag"), # 注意顺序!!!
  86. )
  87.  
  88. def __str__(self):
  89. return self.title
  90.  
  91. class Meta:
  92. verbose_name = "文章"
  93. verbose_name_plural = verbose_name
  94.  
  95. class ArticleDetail(models.Model):
  96. """
  97. 文章详情表
  98. """
  99. nid = models.AutoField(primary_key=True)
  100. content = models.TextField()
  101. article = models.OneToOneField(to="Article", to_field="nid")
  102.  
  103. class Meta:
  104. verbose_name = "文章详情"
  105. verbose_name_plural = verbose_name
  106.  
  107. class Article2Tag(models.Model):
  108. """
  109. 文章和标签的多对多关系表
  110. """
  111. nid = models.AutoField(primary_key=True)
  112. article = models.ForeignKey(to="Article", to_field="nid")
  113. tag = models.ForeignKey(to="Tag", to_field="nid")
  114.  
  115. def __str__(self):
  116. return "{}-{}".format(self.article.title, self.tag.title)
  117.  
  118. class Meta:
  119. unique_together = (("article", "tag"),)
  120. verbose_name = "文章-标签"
  121. verbose_name_plural = verbose_name
  122.  
  123. class ArticleUpDown(models.Model):
  124. """
  125. 点赞表
  126. """
  127. nid = models.AutoField(primary_key=True)
  128. user = models.ForeignKey(to="UserInfo", null=True)
  129. article = models.ForeignKey(to="Article", null=True)
  130. is_up = models.BooleanField(default=True)
  131.  
  132. class Meta:
  133. unique_together = (("article", "user"),)
  134. verbose_name = "文章点赞"
  135. verbose_name_plural = verbose_name
  136.  
  137. class Comment(models.Model):
  138. """
  139. 评论表
  140. """
  141. nid = models.AutoField(primary_key=True)
  142. article = models.ForeignKey(to="Article", to_field="nid")
  143. user = models.ForeignKey(to="UserInfo", to_field="nid")
  144. content = models.CharField(max_length=) # 评论内容
  145. create_time = models.DateTimeField(auto_now_add=True)
  146. parent_comment = models.ForeignKey("self", null=True, blank=True) # blank=True 在django admin里面可以不填
  147.  
  148. def __str__(self):
  149. return self.content
  150.  
  151. class Meta:
  152. verbose_name = "评论"
  153. verbose_name_plural = verbose_name

models.py

  1.  
 
 
 
 
 

简单BBS项目开始(一)的更多相关文章

  1. 简单BBS项目开始(二)

    登陆和生成图片验证码 1.生成图片 pillow 1.生成图片的模块pillow,在python中安装pillow,在Django中使用时用PIL2. 在页面上<img id="val ...

  2. BBS项目知识点汇总

    目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...

  3. 小福bbs——项目需求分析

    # 一.简单了解 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 第一个版本,根据项目预期情况形成 作业的正文 小福bbs--项目需求分析 其 ...

  4. 简单vue项目脚手架(vue+webpack2.0+vuex+vue-router)

    github地址 使用技术栈 webpack(^2.6.1) webpack-dev-server(^2.4.5) vue(^2.3.3) vuex(^2.3.1) vue-router(^2.5.3 ...

  5. BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)

    BBS项目涉及的知识点 django中知识点 钩子函数(局部钩子和全局钩子) 1.局部钩子就是用来做合法性校验,比如用户名有没有被使用等 2.全局的就是用来做对比校验,比如两次输入的密码是否一致 3. ...

  6. Intellij创建简单Springboot项目

    Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...

  7. Hibernate入门2.简单的项目开发实例

    Hibernate入门2.简单的项目开发实例 这一节通过一个简单的项目学习Hibernate项目的配置 代码下载 : 链接: http://pan.baidu.com/s/1zlgjl 密码: p34 ...

  8. BBS项目部署

    1.准备 项目架构为:LNM+Python+Django+uwsgi+Redis   (L:linux,N:nginx,M:mysql) 将bbs项目压缩上传到:  /opt 在shell中直接拖拽 ...

  9. auth复习和BBS项目的登录(1)

    auth复习 auth组件 验证:authenticate(request,username='andy',password='123) 登录:login(request,user) 注销:login ...

随机推荐

  1. 5G-NR物理信道与调制-下行链路v1.1.0

    上接<5G-NR物理信道与调制v1.1.0>下行链路 References Definitions, symbols and abbreviations 帧结构与物理资源 通用函数 上行链 ...

  2. Android多模块混淆的问题

    Android在多模块或者组件化的时候,关于混淆的管理,一般常见的做法就是两条. 把所有的混淆规则规则都放在app模块下面,由app统一管理.这样就会有一个问题,就是到会导致混淆规则的冗余. 由mod ...

  3. springboot java web开发工程师效率

    基础好工具 idea iterm2 和 oh-my-zsh git 热加载 java web项目每次重启时间成本太大. 编程有一个过程很重要, 就是试验, 在一次次试验中探索, 积累素材优化调整程序模 ...

  4. xshell6使用的命令

    我们进入Xshell的界面之后连接上Linux服务器 常用命令: (1)命令ls——列出文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当前目录下 ...

  5. Filter过滤器Listener:监听器

    Filter过滤器 1. 概念 web中的过滤器:当访问服务器资源是,过滤器可以将请求拦截下来,完成一些特殊功能: 过滤器的作用 完成通用的操作:例如登录验证.统一编码处理.敏感字符过滤... 快速入 ...

  6. Java框架之SpringBoot-Web构建-yml-模块-注解

    SpringBoot Spring Boot是一站式整合所有应用框架的框架,简化Spring应用开发,约定大于配置,去繁从简,开箱即用,准生产环境的运行时应用监控框架 快速构建 SpringBoot ...

  7. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...

  8. 【Django】接收照片,储存文件 前端代码

    后端: from rest_framework.views import APIView from car import settings from django.shortcuts import r ...

  9. Failed to open the key database file. c;\\User\\w\\Destop\\SecureCRT_FX6.5.3\\Config\\KnowHosts\\Hostsmap.txt这个问题的解决方法

    1.首先将这段错误在百度翻译上面查询一下,是什么意思,查询结果如下: 打开密钥数据库文件失败.C:\用户\ w \平台\ securecrt_fx6.5.3 \\ \\ \\ hostsmap.txt ...

  10. 微信小程序实战(一)之仿美丽说

    被美丽说少女粉吸引,就想着自己也写一个来练练手,正好最近在学习微信小程序.接下来让我们分享一下我的学习历程吧! 选题 其实纠结了好久该仿什么,看到别人都写的差不多了,自己却还没有动手,很着急,那两天一 ...