3-16번의 1번 과제 질문입니다.
answer_views.py 에서
question = get_object_or_404(Question, pk=question_id)
를 통해서 question을 받아오고
question에 해당하는 answer를 모두 얻어와 render 해주고 싶은데 어떻게 얻어올 수 있나요?
answer_list = question.answer_set
해당방식으로는 받아올수 없어서 질문드립니다.
dolgogae 님 293
M 2021년 10월 7일 3:49 오후
question.answer_set 은 잘 동작할텐데요? 동작하지 않는 코드를 보여주세요.
-
박응용님,
2021년 10월 8일 1:35 오전
추천
,
대댓글
@박응용님
```python
@login_required(login_url='common:login')
def answer_create(request, question_id):
"""
pybo 답변등록
"""
page = request.GET.get('page','1')
question = get_object_or_404(Question, pk=question_id)
if request.method == "POST":
form = AnswerForm(request.POST)
if form.is_valid():
answer = form.save(commit=False)
answer.create_date = timezone.now()
answer.question = question
answer.author = request.user
answer.save()
return redirect('{}#answer_{}'.format(
resolve_url('pybo:detail', question_id=question.id), answer.id))
else:
form = AnswerForm()
paginator = Paginator(question.answer_set, 3)
page_obj = paginator.get_page(page)
max_index = len(paginator.page_range)
context = {'question': question,
'answer_list': page_obj,
'form': form}
return render(request, 'pybo/question_detail.html', context)
```
views.py 일부 해당 소스 코드입니다.
위에서 answer_set을 render에 넣어서 templates/pybo/answer_detail.html로 보내줘
```python
<h5 class="border-bottom my-3 py-2">{{answer_list.count}}개의 답변이 있습니다.</h5>
```
을 했지만 answer_list.count는 아무 것도 받아오질 못합니다...
-
dolgogae님,
2021년 10월 8일 7:44 오전
추천
,
대댓글
+1
@dolgogae님 답변의 갯수는 페이징이 적용된 객체의 갯수로 하면 1페이지의 갯수만 나오기 때문에 일단 사용하지 않는 것이 좋습니다. 아마 page_obj 에는 count 속성이나 함수가 없을 것 같습니다. 따라서 answer_count = question.answer_set.count() 로 구한 후 그 값을 템플릿에 전달해 보세요.
-
박응용님,
2021년 10월 8일 8:41 오전
추천
,
대댓글
@박응용님
위 views.py 소스코드에서
answer_list = question.answer_set()
context = {'question': question,
'answer_list': answer_list,
'form': form}
다음과 같이 수정하고
html파일에서
{% for answer in answer_list %}
<a name="answer_{{ answer.id }}"></a>
단순히 이것도 받아오질 못하는데 어떤 부분에서 잘못된걸까요...?
(html에서 question.answer_set을 쓰면 잘 받아와집니다)
-
dolgogae님,
2021년 10월 8일 11:01 오전
추천
,
대댓글
+1
@dolgogae님 answer_list = question.answer_set() 대신 answer_list = question.answer_set.all() 로 해보세요.
-
박응용님,
2021년 10월 8일 2:06 오후
추천
,
대댓글