def write_post(request): pages = int(request.POST.get('pages', 1)) # 현재 페이지 kwd = str(request.GET.get('kwd', '')) # 검색어 # 공통 파라미터 -------------------------------------------------------------- # 로그인 확인 authuser = request.session['authuser'] if authuser is None: return HttpResponseRedirect('/board') board = Board() board.user_id = authuser['id'] board.title = request.POST['title'] board.content = request.POST['content'] # 스크립트를 무시하고 잘못된 정보를 줬을 때 if board.title == '': return HttpResponseRedirect('/board') if board.content == '': return HttpResponseRedirect('/board') # 부모id가 있으면 답글 parentno = int(request.POST.get('parentno', -1)) if parentno == -1: # groupno : 답글이 아니면 (Max+1) value = Board.objects.aggregate(max_groupno=Max('groupno')) max_groupno = 0 if value['max_groupno'] is None else value[ 'max_groupno'] board.groupno = max_groupno + 1 # orderno : 답글이 아니면 항상 1 board.orderno = 1 # depth : 답글이 아니면 항상 0 board.depth = 0 else: # 답글이면 일단 부모 객체를 가져온다 parents = Board.objects.get(id=parentno) # groupno : 답글이면 부모것과 같게 board.groupno = parents.groupno # orderno : 답글이면 (부모것+1) 보다 크거나 같은거 모두 (+1)해서 밀고 (부모것+1) board.orderno = parents.orderno + 1 Board.objects.filter(groupno=board.groupno).filter( orderno__gte=board.orderno).update(orderno=F('orderno') + 1) # depth : 답글이면 (부모것+1) board.depth = parents.depth + 1 # parentno : 답글이면 부모번호 board.parentno = parentno board.save() return HttpResponseRedirect('/board')