10. 点赞思路(以动态点赞为例)

10.1 在详细接口返回时,给点赞字段,返回两种状态,

True:点过赞,False:未登录/登录未点赞

10.2 前端点击时,把动态id传过来,后端提供一个点赞接口,

10.3 后端进行校验,

未点赞:给点赞表添加一条记录/动态表的数量+1。

点过赞:给点赞表删除一条记录/动态表的数量-1

1. 基表

class BaseModel(models.Model):is_show = models.BooleanField(verbose_name='展示', default=True)is_delete = models.BooleanField(verbose_name='删除', default=False)create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True)order = models.SmallIntegerField(verbose_name='排序', default=1)class Meta:# 抽象表abstract = True

2.  用户表

class UserInfo(BaseModel):"""用户表"""phone = models.CharField(verbose_name='手机号', max_length=11, unique=True)token = models.CharField(verbose_name='token', max_length=225, blank=True, null=True)bucket = models.CharField(verbose_name='桶', max_length=225, blank=True, null=True)region = models.CharField(verbose_name='区域', max_length=32, default='ap-chengdu')nickName = models.CharField(verbose_name='微信名称', max_length=225, default='梦')avatar = models.CharField(verbose_name='头像', max_length=225,default='19803630852-1645427981-1305448189.cos.ap-chengdu.myqcloud.com/l13c23ek1645803983515.png')

3. Release

class Release(BaseModel):"""发布"""position = models.CharField(verbose_name='位置', max_length=225, blank=True, null=True)content = models.CharField(verbose_name='内容', max_length=225)# 这三个存数量,做一个优化release_up = models.BigIntegerField(verbose_name='新闻点赞数量', default=0)watch_num = models.BigIntegerField(verbose_name='观看人数数量', default=0)release_num = models.BigIntegerField(verbose_name='评论数量', default=0)# db_constraint=False db_constraint=False  逻辑上的关联,实质上没有外键联系,增删不会受外键影响,orm查询不影响userinfo = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING, db_constraint=False)topic = models.ForeignKey(verbose_name='话题', to='Topic', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='topic_release')# 图片链接拼接@propertydef cover_msg_url(self):# 每一个对象走一遍msg_url = self.media.all().filter(is_show=True, is_delete=False).first().cosUrl# print(msg_url)return msg_url"""v1: model进行处理# 图片链接拼接@propertydef msg_url(self):msg_url = self.media.all().filter(is_show=True, is_delete=False).values('cosUrl')return msg_url
"""

4. Media

class Media(BaseModel):name = models.CharField(verbose_name='名称', max_length=225, blank=True, null=True)choice_type = ((1, "无"),(2, "图片"),(3, "视频"),)type = models.SmallIntegerField(verbose_name='类型', default=1)cosUrl = models.CharField(verbose_name='路径', max_length=225, blank=True, null=True)# db_constraint=False,release = models.ForeignKey(verbose_name='发布', to='Release', related_name='media', on_delete=models.DO_NOTHING,null=True, blank=True)cosETag = models.CharField(verbose_name='校验信息', max_length=225, blank=True, null=True)cos_media_name = models.CharField(verbose_name='cos图片名称,删除使用', max_length=225, default='1.png')

5.  Topic

class Topic(BaseModel):"""话题"""name = models.CharField(verbose_name='话题名称', max_length=225)people_num = models.BigIntegerField(verbose_name='话题关注人数', default=0)class Meta:verbose_name = "话题"verbose_name_plural = "话题"

6.  Comment

class Comment(BaseModel):"""评论表"""comment = models.CharField(verbose_name='评论内容', max_length=225, null=True, blank=True)new = models.ForeignKey(verbose_name='发布', to='Release', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='comment_new')userinfo = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='comment_userinfo')reply = models.ForeignKey(verbose_name='父评论', to='self', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='comment_reply')depth = models.PositiveIntegerField(verbose_name='评论深度', default=1)root = models.PositiveIntegerField(verbose_name='父id', null=True, blank=True)# 优化表中只存储点赞数量,记录在另一个表中comment_up = models.BigIntegerField(verbose_name='评论点赞数量', default=0)

7. WatchNum

class WatchNum(BaseModel):"""浏览记录表,类似于多对多"""userinfo = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='watch_num_userinfo')new = models.ForeignKey(verbose_name='发布', to='Release', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='watch_num_new')

8. ReleaseUp

class ReleaseUp(BaseModel):"""动态点赞记录表,类似于多对多"""userinfo = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='ReleaseUp_userinfo')new = models.ForeignKey(verbose_name='发布', to='Release', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='ReleaseUp_new')

9. CommentUp

class CommentUp(BaseModel):"""评论点赞记录表,类似于多对多"""userinfo = models.ForeignKey(verbose_name='用户', to='UserInfo', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='CommentUp_userinfo')comments = models.ForeignKey(verbose_name='评论', to='Comment', on_delete=models.DO_NOTHING, db_constraint=False,null=True, blank=True, related_name='CommentUp_new')

动态消息表评论表点赞表相关推荐

  1. php mysql仿微信朋友圈评论表设计_PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...

    我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取当前 ...

  2. 设计类似于抖音、小红书、微博等方式的主题点赞与评论的数据库表

    转载请注明Garcia 主题设计: 主题ID.用户ID.主题标题.主题城市.主题位置名称.主题位置详细地址.地理经度.地理纬度.     主题展示内容(100).主题展示媒体文件路径(List图片名称 ...

  3. 有关动态数据交换DDE、注册表和文件关联(转载)

    有关动态数据交换DDE.注册表和文件关联的片语只言(转载) 一.动态数据交换(Dynamic Data Exchange,简称DDE) DDE协议定义了一组消息及其使用规则,借助共享内存机制,通过应用 ...

  4. mysql压缩表语句_MYSQL静态表、动态表、压缩表总结

    摘要:mysql在创建表的时候定义表的性质(也叫表的类型),共有三种:静态表,动态表,压缩表.默认是静态表,如果存在varchar.blob.te... mysql在创建表的时候定义表的性质(也叫表的 ...

  5. 一种以动态库的方式使用资源表的方案

    这段时间研究了一下资源表的优化方案,算是有了一些成果,在此记录下来. 先交代一下背景吧:我们的服务器把资源表放在共享内存上.这么做的原因主要是,进程core掉后再拉起时不需要重新再构建一遍资源表(构建 ...

  6. mysql 行列转换 动态_mysql 行列动态转换的实现(列联表,交叉表)

    (1)动态,适用于列不确定情况 create table table_name( id int primary key, col1 char(2), col2 char(2), col3 int ); ...

  7. 动态加载html 添加样式表,使页面动态加载不同CSS样式表,从而实现不同风格模板的方法...

    我们在制作网页时,有时会制作多种风格模板,而想把这些模板都用起来,而又不知道方法,通过以下两种方法,你就可以实现相同网站不同CSS模板的方法. ASP.Net中利用CSS实现多界面两种方法. 方法一: ...

  8. 利用T-SQL动态定义重复SQL Server数据库表行

    介绍 (Introduction) Lever T-SQL to handle duplicate rows in SQL Server database tables article highlig ...

  9. java动态是如何根据实体建表_传入Java对象 自动创建动态表 并录入数据

    看到Hibernate你给一个对象,他就能动态的创建配置文件里面指定的表名,然后把数据录入到数据库,当初感觉是很神奇,不过,好像 Hibernate不能动态的分表创建表和录入数据 我这里写了一个公用的 ...

最新文章

  1. brave浏览器_兼容Chrome 插件的Brave浏览器,带给你更快速的上网冲浪体验
  2. KS004 基于SSH通讯录系统设计与实现
  3. Grunt手表错误 - 等待...致命错误:观看ENOSPC
  4. 深入理解阻塞socket和非阻塞socket
  5. throw和throws的使用
  6. linux环境下项目启动却访问不,在Linux环境下部署项目遇到的一些问题
  7. 在柱状图中找最大矩形——O(n)时间复杂度java实现
  8. 设计灵感|怎么设计渐变海报更有趣味性?
  9. 测试色谱柱柱效的软件,高效液相色谱柱柱效测定
  10. Red Hat Linux 启动流程图
  11. VBA实战技巧精粹019:如何快速填充考场号及座号
  12. OpenContrail 体系
  13. 数据聚合与分组操作(数据分析)
  14. 阿里云盾技术强在哪里?轻松防御DDoS、CC攻击 1
  15. 局部线性嵌入 (Locally linear embedding-LLE)原理总结
  16. ipvs 导致syn 重传问题
  17. Android耳机耳机,Android 耳机插拔流程源码跟踪浅析
  18. Python文件IO基础,看这篇文章就够了!
  19. 2021 年高教社杯全国大学生数学建模竞赛 E 题 中药材的鉴别 第一题
  20. JavaScript网页特效-折叠面板

热门文章

  1. 雨心触动精灵VIP教程
  2. MDK中hex转BIN文件生成
  3. python 字符 数字比较_Python数字和字符串(5/30)
  4. 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 。请检查名称
  5. facebook bigpipe
  6. 超10名房企老板受累官员落马 地产成了高危行业
  7. 256色图像不一定是灰度图像。
  8. python发邮件怎么用服务器每天发_神级程序员的Python爬虫!服务器定时发邮件(知识点全面)...
  9. JS实现元素消失特效
  10. 弄潮儿数据_4G+3D是大数据时代的弄潮儿