【问题标题】:Convert the choice value by transforming the model to json format通过将模型转换为 json 格式来转换选择值
【发布时间】:2016-07-22 13:19:45
【问题描述】:

我有那个模型。

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 的值。也就是说 { “描述”:“sdsds”, “名词”:“dsds”, “estado”:“激活” }

【问题讨论】:

  • 很遗憾,您并不清楚您在问什么。
  • object_list = Cargo.objects.all ()
  • 我希望通过 JSON 来声明值 1 通过选择转换为“活动”
  • 而不是 [{"fields": {"descripcion": "sdsds", "nombre": "dsds", "estado": 1}] 我想成为 json [{ “字段”:{“描述”:“sdsds”,“名词”:“dsds”,“estado”:“Activo”}]
  • 您可以编写自己的 json 方法来序列化对象并调用它。

标签: django django-models django-forms django-templates django-views


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2016-02-24
    • 2012-08-12
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多