python3进阶开发-第一个仿博客园的项目(1)
首先我们要设计一下表结构:
UserInfo(用户信息表) --------》一对一 -----------》Blog(博客信息表)
UserInfo(用户信息表) ---------》一对多 -----------》Article UpDown(点赞表)
UserInfo(用户信息表) ---------》一对多 -----------》Article Comment(评论表)
UserInfo(用户信息表)----------》一对多 -----------》Article(文章)
Blog(博客信息表) ----------------》 一对多 -----------》Category(个人博客文章分类表)
Blog(博客信息表) ----------------》一对多 ------------》Tag(标签表)
Category(个人博客文章分类表)--》 一对多 -------------》Article(文章表)
Tag(标签表) --------------------------》多对多 -------------》Article(文章表)
Article(文章表) ------------------------》一对一 -------------》ArticleDetail(文章详情表)
Article(文章表) ------------------------》一对多 --------------》Article UpDown(点赞表)
Article(文章表) ------------------------》一对多 ---------------》Article Comment(评论表)
from django.db import models# Create your models here. from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser): #继承了Django框架自带的一张用户表,我们可以自定义原表没有的属性进行拓展"""用户信息表"""nid = models.AutoField(primary_key=True)phone = models.CharField(max_length=11, null=True, unique=True)avatar = models.FileField(upload_to="avatars/", default="avatars/default.png")blog = models.OneToOneField(to="Blog", to_field="nid", null=True)def __str__(self):return self.usernameclass Meta:verbose_name = "用户信息"verbose_name_plural = verbose_nameclass Blog(models.Model):"""博客信息"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=64) # 个人博客标题theme = models.CharField(max_length=32) # 博客主题def __str__(self):return self.titleclass Meta:verbose_name = "博客"verbose_name_plural = verbose_nameclass Category(models.Model):"""个人博客文章分类"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=32) # 分类标题blog = models.ForeignKey(to="Blog", to_field="nid") # 外键关联博客,一个博客站点可以有多个分类def __str__(self):return "{}-{}".format(self.blog.title, self.title)class Meta:verbose_name = "文章分类"verbose_name_plural = verbose_nameclass Tag(models.Model):"""标签"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=32) # 标签名blog = models.ForeignKey(to="Blog", to_field="nid") # 所属博客def __str__(self):return self.titleclass Meta:verbose_name = "标签"verbose_name_plural = verbose_nameclass Article(models.Model):"""文章"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=50) # 文章标题desc = models.CharField(max_length=255) # 文章描述create_time = models.DateTimeField(auto_now_add=True) # 创建时间category = models.ForeignKey(to="Category", to_field="nid", null=True)user = models.ForeignKey(to="UserInfo", to_field="nid")tags = models.ManyToManyField(to="Tag",through="Article2Tag",through_fields=("article", "tag"),)def __str__(self):return self.titleclass Meta:verbose_name = "文章"verbose_name_plural = verbose_nameclass ArticleDetail(models.Model):"""文章详情表"""nid = models.AutoField(primary_key=True)content = models.TextField()article = models.OneToOneField(to="Article", to_field="nid")class Meta:verbose_name = "文章详情"verbose_name_plural = verbose_nameclass Article2Tag(models.Model):"""文章和标签的多对多关系表"""nid = models.AutoField(primary_key=True)article = models.ForeignKey(to="Article", to_field="nid")tag = models.ForeignKey(to="Tag", to_field="nid")def __str__(self):return "{}-{}".format(self.article, self.tag)class Meta:unique_together = (("article", "tag"),)verbose_name = "文章-标签"verbose_name_plural = verbose_nameclass ArticleUpDown(models.Model):"""点赞表"""nid = models.AutoField(primary_key=True)user = models.ForeignKey(to="UserInfo", null=True)article = models.ForeignKey(to="Article", null=True)is_up = models.BooleanField(default=True)class Meta:unique_together = (("article", "user"),)verbose_name = "点赞"verbose_name_plural = verbose_nameclass Comment(models.Model):"""评论表"""nid = models.AutoField(primary_key=True)article = models.ForeignKey(to="Article", to_field="nid")user = models.ForeignKey(to="UserInfo", to_field="nid")content = models.CharField(max_length=255) # 评论内容create_time = models.DateTimeField(auto_now_add=True)parent_comment = models.ForeignKey("self", null=True)def __str__(self):return self.contentclass Meta:verbose_name = "评论"verbose_name_plural = verbose_name
转载于:https://www.cnblogs.com/ManyQian/p/9271324.html
python3进阶开发-第一个仿博客园的项目(1)相关推荐
- H5移动开发AUI框架入门---博客园老牛大讲堂
大家都知道H5可以开发移动端的页面,网上提供的移动端的开发都有很多.因为我学习了AUI框架,所以我这里介绍一下移动端AUI框架.--博客园老牛大讲堂 一.AUI框架是什么?---博客园老牛大讲堂 AU ...
- mysql 进阶_mysql进阶 - 随笔分类 - 云潇洒 - 博客园
随笔分类 - mysql进阶 1 摘要:防御SQL注入的方法总结 这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下. SQL注入是一类危害 ...
- BBS(仿博客园系统)项目03(主页搭建、个人站点搭建(侧边栏分类展示、标签展示、日期归档)、文章详情页相关功能实现)...
摘要: 主页面的搭建(导航条下面的区域) 个人站点 侧边栏分类展示 侧边栏标签展示 侧边栏日期归档 文章详情页 文章内容 文章点赞点踩 文章评论 一.主页面home.html的搭建(进一步完善) ho ...
- 博客园php教程,PHP仿博客园,个人博客(1)_PHP教程
本人本科学历,自学PHP大半年多了,断断续续地,但是最终还是坚定了我的想法,将PHP继续下去,所以写这个PHP的博客是为了找个稳定的 PHP工作,不求工资多高,但求一收留之地.我能看懂大部分英语文档, ...
- 【Python3 爬虫】13_爬取博客园首页所有文章
首先,我们确定博客园首页地址为:https://www.cnblogs.com/ 我们打开可以看到有各种各样的文章在首页,如下图: 我们以上图标记的文章为例子吧!打开网页源码,搜索Docker,搜索结 ...
- BBS+ BLOG系统(仿博客园)
一.基本要求 作业题目:开发BBS+BLOG系统 作业需求: 1 基于ajax和用户认证组件实现登录验证 2 基于ajax和form组件实现注册功能 3 系统首页文章列表的渲染 4 个人站点页面设计5 ...
- [Tool] 仿博客园插入代码的 WLW 插件
一 插件相关效果图展示 插件效果图: 在 Windows Live Writer 中的效果如图: [1] [2] [3] 对应的插入代码在博客中的效果如下: [1] public static vo ...
- 仿博客园个人博客(3)基本完成
唠叨几句: 前段时间找了家公司上班,也算是真正跨入了计算机行业了,可惜地是我们这城市太小,没什么PHP工作机会,少数地几家都是做网络营销型的,我几乎相当于美工!可我不会啊,但是他们招聘条件上说了: 要 ...
- python3-开发进阶-仿博客园项目setting.py的文件的配置,admin,forms(2)
前面我们先分析了一下,做这个项目需要的几张表,今天我们从配置文件开始一步一步去解释这么的原因 首先先来看setting.py文件: """ Django settings ...
最新文章
- 17条避坑指南:一份来自谷歌的数据库经验贴
- 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
- Serializing Lua objects into Lua Code
- Mysql报错130_mysql 突然报错,连接不上
- node seneca_使用Node.js和Seneca编写国际象棋微服务,第2部分
- 装修材料石膏线品牌加盟类织梦模板
- html水调歌头实验总结,水调歌头明月几时有反思小结
- pioneer软件VoLTE测试步骤,Pioneer操作说明.docx
- rubyonrails test 小记
- odoo社区版审批流
- javascript caller
- 佛经小故事--《盲龟浮木》
- mysql查询手机号199开头_从今天起,你将能用上199开头的手机号了……
- VS运行错误提示:未处理的异常0xC000 0005
- hint: Updates were rejected because the tip of your current branch is behind(git push线上与本地版本冲突问题)
- socket之UDP通讯
- Joomla模板风格怎么设置
- 用Python驱动Headless Chrome
- JavaScript_shoping++
- 苹果手机壳_苹果官方最贵手机壳,能买一部安卓机!