在管理员中将整数选择值显示为字符(非整数)
Show Integer choice value as Characters (not integer) in Admin
我正在尝试显示选项字段中的值。使用以下方法,导致 "Store" 模型损坏(从管理员中单击它)
错误是:
TypeError __str__ returned non-string (type int)
当我将 str 更改为 int 时,错误停止 - 但它不显示区域选择(只是 "Region Object").
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)
我怎样才能正确选择 return 区域(来自单词列表,而不是整数本身)?
问题是您的 __str__
方法 必须 return 类型为 str
.
的对象
由于索引是存储在 self.region
中的内容,您可以简单地进行查找:
class Region(models.Model):
...
def __str__(self):
return Region_CHOICES[self.region][1]
只需将类型强制转换为字符串
def __str__(self):
return str(self.region)
这对我有用
我正在尝试显示选项字段中的值。使用以下方法,导致 "Store" 模型损坏(从管理员中单击它)
错误是:
TypeError __str__ returned non-string (type int)
当我将 str 更改为 int 时,错误停止 - 但它不显示区域选择(只是 "Region Object").
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)
我怎样才能正确选择 return 区域(来自单词列表,而不是整数本身)?
问题是您的 __str__
方法 必须 return 类型为 str
.
由于索引是存储在 self.region
中的内容,您可以简单地进行查找:
class Region(models.Model):
...
def __str__(self):
return Region_CHOICES[self.region][1]
只需将类型强制转换为字符串
def __str__(self):
return str(self.region)
这对我有用