我有一些使用get_field_name_display()
的代码。
这是发生了什么:
class Obj(models.model):
CHOICES = ((0, 'Foo'),
(1, 'Bar'),
(2, 'Baz'))
x = models.IntegerField(choices=CHOICES)
description = models.CharField(max_length=200)
...
obj = Obj(x=0)
obj.description = obj.get_x_display() + ' ' + obj.id
obj.description # Expected: 'Foo 21'
此代码在shell中运行良好,但是当代码在开发服务器中运行时,生成的描述为0 21
。发生了什么事?
请注意,在调用get_x_display()
之前保存对象并不能解决这个问题。从数据库中获取对象的新副本 ,但这太可怕了,我宁愿不这样做。
答案 0 :(得分:-2)
尝试使用
class Obj(models.model):
CHOICES = ((0, 'Foo'),
(1, 'Bar'),
(2, 'Baz'))
x = models.IntegerField(choices=CHOICES)
description = models.CharField(max_length=200)
@property
def nu(self):
return self.get_x_display()
和in:obj.description = obj.nu +''+ obj.id`