我有那个模特。
ESTADO=(
(0,'Desabilitado'),
(1,'Habilitado')
)
class Cargo(models.Model):
nombre = models.CharField(max_length=50,verbose_name='Nombre',unique=True)
descripcion = models.CharField(max_length=100,verbose_name='Descripcion', blank=True)
estado = models.IntegerField(choices=ESTADO,default=1, verbose_name='Estado')
def __unicode__(self):
return '%s - %s'%(self.nombre,self.get_estado_display())
class Meta:
verbose_name = 'Cargo'
verbose_name_plural = 'Cargos'
ordering = ['-nombre']
我有这个观点:
def listar_cargos(request):
object_list = Cargo.objects.all()
json = serializers.serialize('json', object_list)
return HttpResponse(json, content_type='application/json')
如果您运行它,则返回给我:
[
{
"fields": {
"descripcion": "sdsds",
"nombre": "dsds",
"estado": 1
},
"model": "inventario.cargo",
"pk": 4
},
{
"fields": {
"descripcion": "Limpia",
"nombre": "Conserje",
"estado": 1
},
"model": "inventario.cargo",
"pk": 2
}
]
当我回到我身边?已被转换为choise的价值。也就是说 { “descripcion”:“sdsds”, “nombre”:“dsds”, “estado”:“Activo” }
答案 0 :(得分:1)
class Cargo(models.Model):
nombre = models.CharField(max_length=50,verbose_name='Nombre',unique=True)
descripcion = models.CharField(max_length=100,verbose_name='Descripcion', blank=True)
estado = models.IntegerField(choices=ESTADO,default=1, verbose_name='Estado')
def __unicode__(self):
return '%s - %s'%(self.nombre,self.get_estado_display())
class Meta:
verbose_name = 'Cargo'
verbose_name_plural = 'Cargos'
ordering = ['-nombre']
@property
def get_estado(self):
return self.get_estado_display()
然后在序列化程序定义中使用model_obj.get_estado而不是model_obj.estado。
您可能必须使用Django Rest Framework才能成功完成此操作。如果是这样,请参阅此问题https://stackoverflow.com/a/28954424/331974