TypeError:'method'对象不可迭代

时间:2015-11-15 00:16:16

标签: django python-3.x django-models django-templates django-views

当我在Django模板中使用以下代码时,我得到一个TypeError:

{% for signature in petition.get_signatures %}
     {% include 'petition/signature.html' with petition=petition %}
{% endfor %}

以下是我的模型和课程:

class Petition(models.Model):
    title = models.CharField(max_length= 90, default="Enter petition title here")
    created_on = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(null=False, upload_to='static/petition-photos/%Y/%m/%d')
    video = models.CharField(max_length=600, default="Enter an external video link")
    petition = models.TextField(null=False, default="Type your petition here")
    created_by = models.ForeignKey(User)

    def total_likes(self):
        return self.like_set.count()

    def __str__(self):
        return self.title[:50]

    def get_signatures(self):
        return self.signature_set.all

class Signature(models.Model):
    petition= models.ForeignKey(Petition)
    user = models.ForeignKey(User)
    description = models.TextField(null=False, blank=False)
    anonymous = models.BooleanField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.petition

当我加载带有'for'条件的模板视图页面时,出现以下错误消息。我得到的错误消息是'method' object is not iterable。我可能做错了什么?有解决方案吗我有点像菜鸟,所以如果你能解释一下解决方案,那就太好了。

1 个答案:

答案 0 :(得分:1)

您需要调用 (pNeighborList[curNode]).pNeighbors方法:

.all()

您返回方法对象本身,而不是调用时产生的结果,并且def get_signatures(self): return self.signature_set.all() 循环尝试迭代该方法对象,并且不能。