2016-11-08 10 views
0

JSONリクエストをデータベースに文字列として保存しようとしましたが、何らかの問題が発生しました。何らかの理由で、データがUnicode文字列としてデータベースに保存されています。私はこれの意味することは、文字列は、データベース内でこのように保存されていることをされています。ここでのビューで、私のコードですJSONがユニコードとしてデータベースに追加されました

[{'content': 'Treehouse', 'name': 'opportunity_name'}, {'content': 'Robert'... 

:彼らは(Uさんなし)このようにする必要があります場合は

[{u'content': u'Treehouse', u'name': u'opportunity_name'}, {u'content': u'Robert', u'name': u'user_firstname'}, {u'content': u'Warren', u'name': u'client_firstname'}, {u'content': u'Buffett', u'name': u'client_lastname'}, {u'content': u'Form ABC123', u'name': u'my_name'}] 

。 PY(このデータはまた、Unicodeとして印刷することができる):

@csrf_exempt 
def send_aggregate_list(request): 
    if request.method == 'POST': 
     data = json.loads(request.body) 
     print 'data' 
     # the output from this print statement is the same, with leading 'u's 
     print data 
     serializer = SendAggregateSerializer(data=data) 
     if serializer.is_valid(): 
      serializer.save() 
      return JSONResponse(data,status=201) 

はmodels.py:

class SendAggregate(models.Model): 
    created = models.DateTimeField(auto_now_add=True) 
    is_sent = models.BooleanField(default=False) 
    global_merge_vars = models.TextField() 
    subject_merge_vars = models.TextField() 
    to_email = models.CharField(max_length=256, blank=False) 
    to_name = models.CharField(max_length=256, blank=False) 
    template = models.ForeignKey(Template, on_delete=models.CASCADE, null=True, blank=True) 

    def __str__(self): 
     return str(self.pk) 

serializers.py:

class SendAggregateSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = SendAggregate 
     fields = ('id', 'created', 'is_sent', 'to_email', 'to_name', 'global_merge_vars', 'subject_merge_vars', 'template') 

それが助け場合は、ここでserializer.validated_dataからの出力は次のとおりです。

OrderedDict([(u'to_email', u'[email protected]'), (u'to_name', u'Recipient Name'), (u'global_merge_vars', u"[{u'content': u'Treehouse', u'name': u'opportunity_name'}, {u'content': u'Robert', u'name': u'user_firstname'}, {u'content': u'Warren', u'name': u'client_firstname'}, {u'content': u'Buffett', u'name': u'client_lastname'}, {u'content': u'Form ABC123', u'name': u'loan_task_subject'}]"), (u'subject_merge_vars', u'[]'), (u'template', <Template: my_name>)]) 
+2

jsonをデータベースに保存するコードを追加してください。 – spectras

+0

JSON文字列を明示的にロードするのはなぜですか?これがシリアライザの機能です。 –

+0

JSONはユニコードですが、djangoとデータベースで問題ありません。以下は[django docs](https://docs.djangoproject.com/ja/1.10/ref/unicode/)です。 – tdelaney

答えて

0

は解決策を見つけました!

import simplejson as json 
関連する問題