def post(self, request, *args, **kwargs):
plants_serializer = PlantSerializer(data=request.data)
data = request.FILES['plantImage']
path = os.path.abspath('../PlantPharmacy/media/images/ ')
path = path.strip()
filename = path + str(data)
if plants_serializer.is_valid():
plants_serializer.save()
result = predict(filename)
obj = Plants.objects.get(plantImage = filename)
obj.classification = result
obj.save()
return Response(plants_serializer.data, status=status.HTTP_201_CREATED)
else:
print('error', plants_serializer.errors)
return Response(plants_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
嗨!
因此,我尝试编辑Django数据库模型条目(将其“分类”字段设置为通过预测函数获得的结果),但是当我搜索图像时(Plants.objects.get(plantImage = filename))表示文件不存在,即使我已经保存了它。我有一种感觉,因为数据库识别文件需要花费一些时间。我试图找到一种解决方法,因为我需要返回图像分类,但我不确定这样做或解决该问题的方法。
获取“ DoesNotExist(“%s匹配查询不存在。”“错误。
答案 0 :(得分:1)
尝试:
obj = plants_serializer.save(commit=False)
obj.classification = predict(filename)
obj.save()
答案 1 :(得分:0)
我尝试了
plants_serializer.save()
result = predict(filename)
plants_serializer.save(user=request.user, classification=result)
return Response(plants_serializer.data, status=status.HTTP_201_CREATED)
但是出现了“ django.db.utils.IntegrityError:NOT NULL约束失败:”错误。在处理它之前,我需要plants_serializer.save(),但是然后要将分类添加到数据库中现有条目中的字段中。
可以通过一个POST请求完成此操作吗?在执行此操作之前,我是否需要以某种方式再次获取条目?我对后端不是很熟悉。