我有一个作物模型:
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方法返回,对吗?你知道吗
谢谢。你知道吗
在
CommonName
的save方法中,调用temp.save()
会导致错误。你知道吗相关问题 更多 >
编程相关推荐