Dmi*_*nov 3 python django django-rest-framework
我的models.py 中有以下代码:
class ApiLog(models.Model):
...
incoming_data = models.TextField('incoming data', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
在serializers.py 中
class ApiLogSerializer(serializers.ModelSerializer):
class Meta:
model = ApiLog
fields = ('incoming_data',)
Run Code Online (Sandbox Code Playgroud)
在views.py 中:
class ApiLogViewSet(APIView):
def post(self, request, format=None):
serializer = ApiLogSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
Run Code Online (Sandbox Code Playgroud)
在 POST 请求中,我发送:
data = {...,
'incoming_data':{"key1":"value1","key2":"value2"}
}
Run Code Online (Sandbox Code Playgroud)
在查看尝试serializer.is_valid() 时出现错误:
{"incoming_data":["Not a valid string."]}
Run Code Online (Sandbox Code Playgroud)
也许是因为我尝试将字典保存到 TextField?
是否可以将此词典保存到 TextField?建议表示赞赏。
在你的序列化器中试试这个:
class ApiLogSerializer(serializers.ModelSerializer):
incoming_data = serializers.JSONField() # change is here
class Meta:
model = ApiLog
fields = ('incoming_data',)
Run Code Online (Sandbox Code Playgroud)
这会将您的JSONdict转换为字符串并作为Text.
更多细节请参考官方 DRF 文档
| 归档时间: |
|
| 查看次数: |
4919 次 |
| 最近记录: |