2017-02-16 2 views
1

Ich benutze Django Version 1.10.5 und Django Rest Framework 3.5.3 Ich installiere pip install jsonfield. Mein Modell hat dieses Feld:Speichern gültiger JSON in JSONField über Django Rest Framework

tags = JSONField(blank=True, default="") 

Dies ist die Daten, die ich auf meinen Server senden:

{ 
    "latitude": 31.65431, 
    "longitude": -28.29471, 
    "accuracy": 5, 
    "upload_type":"3", 
    "share_group":1555, 
    "description": "Testing a event from mobile application", 
    "timestamp": "2017-02-16T09:27:23Z", 
    "tags": [{"tagId": 29,"values": [{"fieldId": 193,"value": "CYX 544 GP"},{"fieldId": 194,"value": ""}]}] 
} 

ich diesen Fehler:

"tags": ["Not a valid string."] 

Der einzige Weg, dies zu umgehen zu sparen ist das:

"tags":[{'tagId': 29,'values': [{'fieldId': 193,'value': 'CYX 544 GP'},{'fieldId': 194,'value': ''}]}]" 

Sicher, ich kann nur ein repl. tun ace ("'", ""), um dies als gültiges json zu verstehen, aber das scheint wie ein Hack zu sein.

Wie soll ich JSON senden und es als JSON mit dem Rest-Framework speichern?

Antwort

1

Ok, das war:

class EventSerializer(serializers.ModelSerializer): 
    tags = serializers.JSONField() 
    class Meta: 
     model = Event 
     fields = ('client', 'latitude', 'upload_type', 'accuracy', 'longitude', 'description', 'tags', 'timestamp') 
+0

gut, aber diese Daten shouldn; t in eine Jsonfield gehen. – e4c5

Verwandte Themen