博客项目第四天

django 专栏收录该内容
14 篇文章 0 订阅

留言功能-1

dict.setfault(keyname, value):keyname必需。您要从中返回值的项目的键名。value可选。如果键存在,则此参数无效。如果键不存在,则此值将成为键的值。默认值 None。 常用于如果键不存在,则设置为value,如果存在,则不改变。
massageapp

使用parent_message =models.IntegerField(verbose_name=‘回复的留言id’)来与回复的留言相关联

massage使用publisher = models.ForeignKey(UserProfile,on_delete=models.CASCADE)与User相关联

使用topic = models.ForeignKey(Topic,on_delete_nodels.CASCADE)与文章相关联

留言功能-2

使用path转换器接收topic_id参数
因为只有一个post方法,所以直接使用视图函数

展示留言功能,在topic的view中。
查询文章的留言,按照时间倒序排序
all_messages = Message.objects.filter(topic = author_topic).order_by(’-created_time’)

遍历all_messages 为msg,如果msg为空,则表示是留言,否则是回复。

(1)使用一个字典,key为被回复的留言parent_msg字段,key是一个列表里面是字典,字典为回复。
(2)使用一个列表记录所有留言,每个留言是一个字典,带有reply:[]字段
(3)遍历留言列表,判断列表中每一项的mid是否在回复字段的key中,如果存在,则将这个key对应的value作为replay字段的值。
此过程使用了字典的hash特性,速度较快。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值