动态消息表&评论表&点赞表

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

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
  1. 用户表
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')
  1. 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')

    # 图片链接拼接
    @property
    def 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进行处理
    # 图片链接拼接
    @property
    def msg_url(self):
        msg_url = self.media.all().filter(is_show=True, is_delete=False).values('cosUrl')
        return msg_url
"""
  1. 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')

  1. 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 = "话题"
  1. 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)

  1. 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')
  1. 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')
  1. 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')

Original: https://blog.csdn.net/qq_52385631/article/details/123188298
Author: 骑台风走
Title: 动态消息表&评论表&点赞表

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737708/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球