不明白为什么我在Django\uuuUnicode\uuuuu(self)方法中得到一个最大递归深度超过错误

2024-09-30 01:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个作物模型:

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方法返回,对吗?你知道吗

谢谢。你知道吗


Tags: namecropselftruereturnifmodelssave

热门问题