Django:将.count值转换为int

时间:2013-10-04 18:23:02

标签: python django types typeerror percentage

我有以下型号:

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,
    })

1 个答案:

答案 0 :(得分: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后才会调用列表的()方法。