我的数据库中有一个表区域
class region(models.Model):
region_name = models.CharField(primary_key=True,max_length=50, null=False)
@classmethod
def __unicode__(self):
return "hello"
当我尝试通过管理界面向DB添加几个新的区域实例时,所有现有区域的标题都是“hello”,因此我将__unicode__(self)
函数更新为
@classmethod
def __unicode__(self):
return u'%s' %(self.region_name)
但现在管理员显示
Exception Type: AttributeError
Exception Value:
type object 'region' has no attribute 'region_name'
我检查了我的数据库,表中有region_name表示区域。谁能帮助为什么会这样呢?
答案 0 :(得分:4)
您不应该使用@classmethod
。只需删除@classmethod
函数的__unicode__
装饰器即可;用@classmethod
修饰的函数的第一个参数是类本身,而不是region
实例的模型实例。
This answer概述了Python中classmethod
和staticmethod
函数修饰符的用途和用法。