【问题标题】:TypeError: 'method' object is not iterableTypeError:“方法”对象不可迭代
【发布时间】:2016-02-16 08:17:58
【问题描述】:

当我在 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。我可能做错了什么?有什么解决办法吗?我是个菜鸟,所以如果你也能解释一下解决方案,那就太好了。

【问题讨论】:

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


    【解决方案1】:

    你需要调用.all()方法:

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

    您返回了方法对象本身,而不是它在调用时产生的结果,{% for signature in .. 循环尝试迭代该方法对象,但不能。

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2013-09-01
      • 2017-08-27
      • 2018-10-10
      • 2021-12-13
      • 2019-02-20
      • 2020-03-27
      • 2018-12-12
      • 2018-07-16
      相关资源
      最近更新 更多