这是我的模型:
class Question(models.Model):
options = models.TextField()以下是序列化程序:
class QuestionSerializer(ModelSerializer):
class Meta:
model = Question以下是这样的观点:
class QuestionView(ListAPIView):
queryset = Question.objects.all()
renderer_classes = (JSONRenderer,)
serializer_class = QuestionSerializer在数据库中,可用的记录如下所示:
id options
1 [u'opt1', u'opt2']当请求api时,以下是返回的JSON:
{
"id": 1,
"options": "[u'opt1', u'opt2']"
}我的问题是如何保存JSON格式的字符串,并在没有unicode前缀的情况下以JSON格式检索它?(我需要支持unicode字符,因此不能简单地将用户提交的数据转换为字符串)
更新:这是我到目前为止找到的一个解决方案。使用詹戈-约翰逊菲尔德定义您的字段:
from jsonfield import JSONField
class Question(models.Model)
options = JSONField()然后,定义一个自定义序列化器字段:
from rest_framework import serializers
class JsonField(serializers.Field):
def to_representation(self, value):
return value
def to_internal_value(self, data):
return data在序列化程序中使用此字段:
class QuestionSerializer(ModelSerializer):
options = JsonField()
class Meta:
model = Question现在,如果您试图存储并检索数据库中的记录,您应该得到一个JSON格式的字符串,而不带unicode前缀。
由于django-jsonfield正在寻找维护人员ATM,以防其过时,下面是我使用的版本:
发布于 2015-12-08 10:55:21
在UTF-8中对unicode字符串进行编码。unicode前缀将消失,字符串仍然支持unicode字符:
>>> msg = u"Hello"
>>> msg = msg.encode("utf-8")
>>> msg
'Hello'因为您需要转换一个dict中的所有值,所以您可能需要编写一个函数来实现这一点。但是这里已经处理好了:如何从Python中的JSON中获取字符串对象而不是Unicode对象?
https://stackoverflow.com/questions/34153602
复制相似问题