为什么get_field_name_display()不起作用?

时间:2014-07-31 16:27:28

标签: python django

我有一些使用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()之前保存对象并不能解决这个问题。从数据库中获取对象的新副本 ,但这太可怕了,我宁愿不这样做。

1 个答案:

答案 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`