0

我有以下型号:

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

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

我想计算给定问题对象的值为“yes”的答案百分比,但出现错误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,
    })
4

1 回答 1

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列表的方法仅在添加后才被调用()

于 2013-10-04T18:26:26.117 回答