0
点赞
收藏
分享

微信扫一扫

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

素锦时年_1b00 2022-02-28 阅读 72

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

    # 图片链接拼接
    @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
"""

 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')
举报

相关推荐

0 条评论