django - 如何将具有 FileField 的 Django 模型转换为 JSON
问题描述
我试图从以下方法获取最后插入的数据
latest = AudioContentModel.objects.latest('id').id
object = model_to_dict(AudioContentModel.objects.get(pk=latest))
但我收到以下错误
TypeError: Object of type 'FieldFile' is not JSON serializable
如何从最后插入的表中获取数据?
这是我的模型.py
class AudioContentModel(models.Model):
background_music = models.FileField(upload_to='documents/')
tts = models.FileField(upload_to='documents/')
final_audio = models.FileField(upload_to='documents/')
created = models.DateField(auto_now_add=True)
这是我的观点.py
def index(request):
if request.method == 'POST':
if request.is_ajax():
audiouploadform = AudioUploadForm(request.POST, request.FILES)
if audiouploadform.is_valid():
audiouploadform.save()
latest = AudioContentModel.objects.latest('id').id
print('Need to get the all the data from the latest and resturn as a JsonResponse')
data{
'background_music':
'tts':
'id':
}
return JsonResponse({'error': False, 'data': data})
else:
return JsonResponse({'error': True, 'errors': audiouploadform.errors})
else:
error = {
'message': 'Error! Must be an Ajax call'
}
return JsonResponse(error, content_type="application/json")
else:
audiouploadform = AudioUploadForm()
all_audio_files = AudioContentModel.objects.all()
data = {
'audio_file_list': all_audio_files,
'audiouploadform': audiouploadform,
}
return render(request, template_name='index.html', context=data)
解决方案
我想通了。
latest = AudioContentModel.objects.latest('id').id
print(latest)
instance = AudioContentModel.objects.get(pk=latest)
data = {
'id': instance.id,
'background_music': instance.background_music.url,
'tts': instance.tts.url,
'created':instance.created,
}
推荐阅读
- javascript - 有没有办法在联合类型上调用数组原型方法?
- javascript - 一段时间循环异步/承诺后的Javascript axios发布
- android - 安装一个应用程序时安装多个 Apk
- c++ - QTextStream 的无效操作数到二进制转换
- c# - 如何使用 Microsoft.Azure.Management.Fluent 列出资源组中的资源?
- excel - 将 Excel 电子表格与 Outlook 日历同步或链接
- javascript - Django Javascript 在 HTML 到 Ajax 调用中不起作用
- php - JQuery、AJAX、PHP 传递大量数据导致报错
- image - 如何使用 java 从 GCP 存储桶中检索或显示图像(使用图像的 URL)?
- c++ - `__declspec(novtable)` 没用吗?