Django вызывает функцию, которая возвращает значение, не работает - PullRequest
0 голосов
/ 10 июля 2010

У меня проблема с вызовом функции, которая возвращает результат из другой функции

Чтобы было понятно, мои функции:

def calculate_questions_vote(request):
    useranswer = Answer.objects.filter (answer_by = request.user)
    positive_votes = VoteUpAnswer.objects.filter(answer = useranswer)
    negative_votes = VoteDownAnswer.objects.filter(answer = useranswer)
    question_vote_rank = sum(positive_votes) - sum(negative_votes.count)
        return question_vote_rank

def calculate_replies(request):
    the_new = News.objects.filter(created_by = request.user)
    reply = Reply.objects.filter(reply_to = the_new)
    reply_rank = sum(reply)
        return reply_rank

и я хочу вызвать их в другой функции, чтобы она могла возвращать значение. Я вызываю функцию из другой функции, например:

rank = calculate_questions_vote

Допустим, сейчас я просто хочу отобразить значение, возвращаемое функцией calc_questions_vote. Конечно, я помещаю переменную ранга в контекст функции.

Моя проблема в том, что мой вывод:

<function calculate_questions_vote at 0x9420144>

Как я могу сделать так, чтобы оно отображало значение, возвращаемое функцией, вместо этой строки?

Ответы [ 2 ]

5 голосов
/ 10 июля 2010

Это базовый Python. То, что вы делаете, просто ссылаетесь на функцию - назначаете саму функцию другой переменной. Чтобы на самом деле вызвать функцию, вам нужно использовать скобки после ее имени:

calculate_questions_vote()

В вашем случае вы определили, что для этой функции необходим объект request, поэтому вам необходимо использовать это и в вызове:

calculate_questions_vote(request)
5 голосов
/ 10 июля 2010

вам нужно передать объект запроса calculate_questions_vote, например:

rank = calculate_questions_vote(request)
...