我有以下型号:
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,
})
答案 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
后才会调用列表的()
方法。