已知topic的id,,需要在entry新增中根据外键topic创建新的entry,所以新的entry的id为外键属性(使用下划线),topic_id=topic.id.

已知详情页的id,及回复内容的content,如果创建新的记录。这里需要匹配到这条回复对应的主题。一个主题详情有很多个回复,一个回复只能对应一个主题。 ItemReply.objects.create(content=content, reply_item_id=id, reply_user_id=user.id)
非常重要

遗留问题,待解决。
因为,每一条主题,带topic和user,这两项是必须要选择的,带关联性的表格如何输入。如何添加。详情页要赋值topic和user
1、如果有主题和user则全部显示出,供add时选择即可
2、如果没有则需要添加,添加后返回1,进行选择,而后将选择的值赋给这个记录,用TodoItem.objects.create()
回复后,需要在回复的后面跟上回复,而不是直接续上,
总觉得detail方法和TodoItemReplyView.as_view()可以合并。

def post(self, request):
    """
    1 获取输入内容
    2 赋值给ItemReply,存在2中情况:如下
        1、 如果所有值都有,则创建数据记录,设置参数,确定其是否可以遍历。
        在detail页面循环遍历显示,包括内容,user,时间
        返回 渲染到detail页面
        2、如果没有,则重定向到detail,重新输入。
        返回 重定向
    """
    #接收数据
    content = request.POST.get('reply',0)
    id = request.GET.get('id', 0)
    # user_name = request.GET.get('user_name',0)

    detail = TodoItem.objects.get(id=id)  # get只能获取一条,filter获取的是查询集,get获取的是对象。
    topic = detail.todoitem_topic
    user = detail.todoitem_user

    ItemReply.objects.create(content=content, reply_item_id=id, reply_user_id=user.id)
    reply_message = detail.itemreply_set.order_by('-date_added')
    # print(reply_message)
    # print(user)
    # print(detail)
    n = 1
    context = {
        'content': detail,
        'user': user,
        'topic': topic,
        'n': n,
        'id': id,
        'reply_message': reply_message  # 移到detail中,因为必须要一点开详情就显示回复。
    }
    # 处理数据

    # 返回响应结果

    # 获取页面id,在该id下进行回复,是否可以合并到todo_detail中
    # 回复的回复者以当前登录状态下的使用人为准。
    return render(request, 'todo_detail.html', context=context)

猜你喜欢

转载自blog.csdn.net/old_man31/article/details/86424424