2014-12-17 3 views
2

을 포기하지 않을 많은 쿼리에 많은 장고. 여기에서는 답변을 제공 한 모든 사용자 만 원합니다.내가 모델이 사용자

'some'을 인쇄하면 답변을 제출 한 첫 번째 사용자에게만 제공되지만 모든 사용자가 필요합니다.

어떻게 모든 사용자를 볼 수 있습니까 ?? 무엇이 많은 쿼리가 될 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까??

for ansr in ques.answer_set.all(): 할 때보기가 HttpResponseObject를 반환하지 않는다고 말합니다. 대신 아무 것도 반환하지 않았습니다 ... 모든 솔루션 ??

+1

'ques'에 여러개의 답이 있습니까? 그리고 왜 응답 모델에'Question'' ForeignKey'가 이미있을 때'ManyToManyField'를 사용하고 있습니까? –

+0

'ques.answer_set.all()'대신'ques.answers.all()'을 사용해서는 안됩니까? 그리고'user.is_doctor'는 메소드 또는 속성입니까? –

+0

http://goo.gl/wpsq7s ... ques.answer_set.all()을 수행 할 때 @AamirAdnan의 설명 – madzohan

답변

0

당신의 접근 방식은 사용자가 복수 응답의 유스 케이스를 처리하는 정말 나쁜,이 같은 당신을 위해 작동합니다 :

ques = Question.objects.get(id=pk) 
anstext = request.GET.get('ans_body',False) 

if request.user.is_doctor: 
    if ques.answer_set.filter(user__id=request.user.id).exists(): 
     messages.warning(request, "You cannot answer twice. Please use comment.") 
    else: 
     ans = Answer.objects.create(user=request.user, question=ques, ans_body=anstext) 
     messages.success(request, "Your answer has been posted successfully.") 
else: 
    messages.warning(request, "You are not allowed to answer") 
return redirect("question-detail", pk, ques.category.id) 

를이 여전히 나쁜 방법이지만, 당신은 사용해야 forms

+0

ohk을 따르고 한 사용자 만 인쇄하는 질문에 답한 사용자를 인쇄하십시오. – gamer

+0

왜냐하면 코드에서 forloop은 첫 번째 반복에서'HttpResponse'를 반환하기 때문입니다. 그것은 두 번째 반복으로 갈 기회를 결코 얻지 못합니다. 그리고 만약 질문에 답이 없다면,'보기가 HttpResponseObject를 돌려주지 않습니다. 대신 '아무 것도 돌려주지 않았습니다 .'라는 오류가 발생합니다. 왜냐하면 당신은 그 사건을 다루지 않기 때문입니다. 어떤 식 으로든 당신의 코드는 엉망이고 멍청하다. 내 솔루션을 대신 사용해 보라. –