2016-08-23 97 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

相關問題