2013-10-04 3 views
0

У меня есть следующие модели:Джанго: преобразовать .count возвращаемого значения в целом

class Question(models.Model): 
    question = models.CharField(max_length=100) 

class Answer(models.Model): 
    question = models.ForeignKey(Question) 
    value = models.CharField(max_length=200) 

Я хочу, чтобы вычислить% ответы со значением «да» для данного объекта вопроса, но я получаю ошибку TypeError int() argument must be a string or a number, not 'method'. Не подсчитывает ли count тип данных int?

Мое мнение:

def questn(request, question_id): 
    q = Question.objects.select_related().get(id=question_id) 
    qc = q.answer_set.count 
    qyc = q.answer_set.filter(value="YES").count 
    qycp = (int(qy)/int(qc)) * 100 
    return render(request, 'base.html', { 
     'q':q, 
     'qc':qc, 
     'qyc':qyc, 
     'qycp':qycp, 
    }) 

ответ

3

Вам нужно вызвать count:

qc = q.answer_set.count() 

() Добавление вызывает метод count. Не имея этого, qc относится к самому методу count.

Вот пример:

>>> a = [1, 2, 3, 4] 
>>> a.clear 
<built-in method clear of list object at 0x02172198> 
>>> a 
[1, 2, 3, 4] 
>>> a.clear() 
>>> a 
[] 
>>> 

Как вы можете видеть, clear метод списка вызывается только после того, как () добавляется.

Смежные вопросы