需求
数据模型:
class QuestionsConfigs(BaseModels):
"""
题目
"""
class Meta:
db_table = "questions"
ordering = ['-created']
objects = QuestionsManager()
content = models.CharField(max_length=2000, default="") # 问题的内容
其中content字段存进去时候是json字符串,在进行序列化时,如果是下面这样:
class QuestionConfigSerializer(serializers.ModelSerializer):
"""
问题的序列化
"""
content = serializers.JSONField(required=False)
class Meta:
model = QuestionsConfigs
fields = ['id', 'content']
在执行下面代码的时候:
self.get_serializer(queryset).data
content会被当成json字符串处理,而不是字典处理。
序列化的代码改成下面这样就可以了
class QuestionConfigSerializer(serializers.ModelSerializer):
"""
问题的序列化
"""
config = serializers.JSONField(required=False)
class Meta:
model = QuestionsConfigs
fields = ['id', 'content']
def to_representation(self, instance):
"""Convert `username` to lowercase."""
ret = super().to_representation(instance)
if 'content' in ret:
ret['content'] = json.loads(ret['content'])
return ret