Django FileField - операция ввода/вывода над закрытым файлом
У меня есть простая модель Jour
и следующая модель (JourAttachment)
:
class JourAttachment(models.Model):
jourreport = models.ForeignKey(JourReport,related_name="jourattachments", on_delete=models.CASCADE)
file = models.FileField(null=False)
При попытке создать Jour-экземпляр я добавляю все вложения следующим образом:
Вид
class JourReportListView(APIView):
serializer_class = JourReportListSerializer
permission_classes = (IsAuthenticated, )
def post(self,request,*args, **kwargs):
user_making_request = request.user
if not user_is_admin(user_making_request):
return UserNotAdminResponse()
attachments = request.FILES.getlist('attachment', None)
serializer = JourReportCreateUpdateSerializer(data=request.data,partial=True,context={'attachments': attachments})
valid = serializer.is_valid(raise_exception=True)
if valid:
serializer.save()
status_code = status.HTTP_201_CREATED
return SuccessfulResponse(data=request.data, message="Jour report successfully registered!" ,status_code=status_code)
return ErrorResponse()
Сериализатор
def create(self, validated_data):
users = []
attachments = self.context['attachments']
if "additional_workers" in validated_data:
users = [w.id for w in validated_data["additional_workers"]]
del validated_data["additional_workers"]
report = JourReport.objects.create(**validated_data)
for a in attachments:
JourAttachment.objects.create(file=a,jourreport=report)
rerturn report
В результате получается ValueError: I/O operation on closed file
, и я понятия не имею почему.