混淆了为什么我在django __unicode __(self)方法中获得最大递归深度超出错误

时间:2015-08-20 21:20:05

标签: python django

我有裁剪模型:

class Crop(models.Model):
    species = models.ForeignKey(Species, null=True)
    def pref_common_name(self):
        pcn = self.commonname_set.filter(preferred=True)
        if pcn[0]:
            return pcn[0]
        else:
            return "No Preferred Common Name"

    def __unicode__(self):
        return "%s (%s)" % (self.pref_common_name, self.species)

有许多常用名称:

class CommonName(models.Model):
    name = models.CharField(max_length=100, null=True)
    preferred = models.BooleanField(default=False)
    crop = models.ForeignKey(Crop, null=True)

    def save(self, *args, **kwargs):
        if self.preferred:
            try:
                temp = CommonName.objects.get(preferred=True, crop=self.crop)
                if self != temp:
                    temp.preferred = False
                    temp.save()
            except CommonName.DoesNotExist:
                pass
        super(CommonName, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name

当调用__unicode__方法时,我得到递归错误。但我不明白为什么会这样。有人能解释一下我的原因吗?我应该能够从unicode方法中获取相关对象的字符串,对吧?

感谢。

1 个答案:

答案 0 :(得分:2)

With wksPivotData .Range(.Cells(currentRow, 1), .Cells(currentRow, 1)).Resize(tbl.ListedRows.Count, tbl.ListColumns.Count).Value = tbl.Range.Value End With 的保存方法中,您调用CommonName会导致错误。