• 【djangoframework序列化】序列化添加自定义内容 例子:二级回复评论


    ## 表的设计 一定要空出N个属性出来给自定义添加内容
    # models.py
    
    

    # 图库评论
    class ImageComment(models.Model):

      user = models.ForeignKey(to="UserInfo", verbose_name="评论用户")
      image = models.ForeignKey(to="Images", verbose_name="评论图库")
      commenty_txt = models.CharField(verbose_name="评论内容", max_length=255)
      children = models.CharField(verbose_name="子评论", max_length=255,null=True,blank=True)
      time = models.DateTimeField(auto_now=True, verbose_name="评论时间")
      zan = models.IntegerField(verbose_name="点赞次数", default=0)


      class Meta:
        db_table = 'ImageComment'
        verbose_name_plural="图库评论"

    # 六合图库二级评论回复
    class ImageSecondComment(models.Model):

      user_id = models.IntegerField(verbose_name="回复用户ID")
      father_image_comment = models.ForeignKey(to="ImageComment", verbose_name="回复父评论主键",related_name="father_image_comments")
      text = models.CharField(verbose_name="回复内容", max_length=255)
      reply_user_id = models.IntegerField(verbose_name="被回复对象ID")
      reply_usrname = models.CharField(verbose_name="被回复对象用户名",max_length=255)
      time = models.DateTimeField(auto_now=True, verbose_name="回复时间")


      class Meta:
        db_table = 'ImageSecondComment'
        verbose_name_plural="图库二级评论回复"

    ## 创建测试数据



    
    
    
     
    ## 自定义添加内容 主要代码部分


    # 取出主评论数据
    s_data = models.ImageComment.objects.filter(image_id=image_pk).order_by('-id')

    ## 添加开始  
    for image_comment_obj in s_data:
      # 属于这个当前主键下的子评论 都储存在这个数组里面 赋值给添加的属性
      children = []
      for x in models.ImageSecondComment.objects.filter(father_image_comment_id=image_comment_obj.pk):
        children_dict = {}
        children_dict["user_id"] = x.user_id

        children_dict["user_head"] = models.UserInfo.objects.get(pk=x.user_id).head
        children_dict["text"] = x.text
        children_dict["reply_user_id"] = x.reply_user_id
        children_dict["reply_usrname"] = x.reply_usrname
        children_dict["time"] = x.time.strftime('%Y-%m-%d %H:%M:%S')

        children.append(children_dict)

    
    

      image_comment_obj.children = children  # 添加完内容后,给创建的空字段赋值(就是自定的内容)

    
    

    ## 添加结束  



    ## 结果:
    {
        "code": 200,
        "data": [
            {
                "id": 5,
                "time": "2020-12-09 14:42:52",
                "commenty_txt": "123",
                "children": "[]",
                "zan": 0,
                "user": 2,
                "image": 1
            },
            {
                "id": 4,
                "time": "2020-12-09 14:42:52",
                "commenty_txt": "123",
                "children": "[{'user_id': 5, 'user_head': '/static/default/head.png', 'text': '没错', 'reply_user_id': 1, 'reply_usrname': '15wehjd', 'time': '2020-12-09 16:06:27'}]",
                "zan": 0,
                "user": 1,
                "image": 1
            },
            {
                "id": 2,
                "time": "2020-12-09 14:42:35",
                "commenty_txt": "22",
                "children": "[]",
                "zan": 0,
                "user": 2,
                "image": 1
            },
            {
                "id": 1,
                "time": "2020-12-09 14:42:35",
                "commenty_txt": "123",
                "children": "[{'user_id': 2, 'user_head': '/static/default/head.png', 'text': '嗯嗯', 'reply_user_id': 1, 'reply_usrname': '15wehjd', 'time': '2020-12-09 16:05:27'}, {'user_id': 1, 'user_head': '/static/default/head.png', 'text': '没错', 'reply_user_id': 1, 'reply_usrname': '15wehjd', 'time': '2020-12-09 16:06:27'}]",
                "zan": 0,
                "user": 1,
                "image": 1
            }
        ]
    }
    主攻:Python 数据分析 web 机器学习 图像识别。。 副攻:JAVA WEB 安卓 大数据
  • 相关阅读:
    测试工具知识大集合
    滴滴,好未来,百度,快手,头条测试&测试开发岗面经(附面试题)
    做数据必知的十本书,你读过几本?
    如何有效延长假期?
    当程序猿第那几年!
    自动化测试中的那些误解和偏见
    北京VS上海:“活着为了工作”还是“工作为了生活”?
    程序员国庆相亲图鉴
    有赞精准测试实践
    IE中的文档兼容性
  • 原文地址:https://www.cnblogs.com/wanghong1994/p/14113845.html
Copyright © 2020-2023  润新知