我正在尝试显示选择字段中的值。使用以下方法,导致“存储”模型中断(从管理员中单击它)

错误是:

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)


我如何才能正确地将Region作为选择返回(从单词列表中而不是整数本身)?

最佳答案

问题是您的__str__方法必须返回类型为str的对象。

由于索引是self.region中存储的内容,因此您可以简单地进行查找:

class Region(models.Model):
    ...
    def __str__(self):
        return Region_CHOICES[self.region][1]

关于python - 在管理员中将整数选择值显示为字符(非整数),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33511922/

10-12 22:12