我试图显示选择字段中的值。使用以下方法,导致"存储"要打破的模型(从管理员点击它)
错误是:
TypeError __str__ returned non-string (type int)
当我将 str 更改为 int 时,错误会停止 - 但它不会显示区域选项(只是"区域对象") 。
country_list = ['Global', 'Australia', 'United Kingdom', 'United States']
Region_CHOICES = tuple(enumerate(country_list, start=1))
class Region (models.Model):
region = models.IntegerField(choices=Region_CHOICES)
def __str__(self):
return self.region
class Store(models.Model):
store_name = models.CharField(max_length=30)
region = models.ManyToManyField(Region, blank=True)
如何让它正确地返回Region作为选择(从单词列表中,而不是整数本身)?
答案 0 :(得分:1)
问题是您的__str__
方法必须返回str
类型的对象。
由于索引是self.region
中存储的索引,因此您只需执行查找:
class Region(models.Model):
...
def __str__(self):
return Region_CHOICES[self.region][1]
答案 1 :(得分:0)
只需输入强制转换为字符串
即可def __str__(self):
return str(self.region)
这对我有用