2016-08-23 93 views
1

我是Django/Python的新成员,目前正在与朋友一起开发项目。他的Android应用JSON格式,看起来像这样将数据发送给我:存储在模型字段中的JSON的Django反序列化

"datum_isteka": "2", 
"e_mail": "null", 
"adress": "null", 
"goods": "[ 
      {\"price\":\"2\", 
      \"good\":\"dobro1\", 
      \"tax_value\":\"2\", 
      \"quantity\":\"pdv %1\"}, 

      {\"price\":\"3\", 
      \"good\":\"dobro 2\", 
      \"tax_value\":\"3\", 
      \"quantity\":\"pdv %3\"} 
      ]", 
"taxes": 5, 
"order_num": 477456, 
"store_user": 2 

在我的模型,这是存储在一个字段(goods)在我看来,我得到这个JSON的这整个goods部分这样表示这在这里...我的问题是我怎么把这个JSON字段goods到一个用户可读的东西。我正在使用DRF与Android应用进行通信。

型号:

class Obraz(models.Model): 
    datum_isteka = models.CharField(max_length=100,blank=True, 
            default='', null=True) 
    e_mail = models.CharField(max_length=100, blank=True, 
           default='', null=True) 
    adress = models.CharField(max_length=100, blank=True, null=True) 
    taxes = models.CharField(max_length=100) 
    order_num = models.CharField(max_length=100, blank=True, default='', 
           null=True) 
    goods = models.CharField(max_length=10000) 
    store_user=models.ForeignKey(Owner, default='Owner') 

型号串行:

class ObrazSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Obraz 
     fields = ('datum_isteka', 'e_mail', 'adress', 'taxes', 
        'order_num','goods ', 'store_user',) 
+0

然后,他发送数据的格式不正确。在序列化之前,不需要将'goods'字段转换为字符串。 –

+0

嗯..有趣的是,当我在视图中显示这些“商品”时,它看起来像一个普通的JSON文件。斜杠不见了.. –

+0

你应该显示一些代码。 –

回答

0

我在模型上

class Obraz(models.Model): 
    ... 
    goods = jsonfield.JSONField() 

使用JSONFieldJSONField(注意这是不一样的现场)在串行器上:

class ObrazSerializer(serializers.ModelSerializer): 
    goods = serializers.JSONField() 
    class Meta: 
     model = Obraz 
     fields = ('datum_isteka', 'e_mail', 'adress', 'taxes', 
        'order_num','goods', 'store_user',) 

希望这有助于

+0

btw:这意味着你不需要在客户端转义JSON ..模型上的字段会将JSON转换为字符串,然后将其存储在数据库中,并在检索数据时返回字典 – pleasedontbelong

相关问题