I can upload the field time and employee but I can't upload an image to the attendance_pic
Model
class Attendance(models.Model):
time = models.DateTimeField(default=datetime.now, blank=True)
employee = models.ForeignKey(Employee, related_name='employees')
attendance_pic = models.ImageField(upload_to='attendance_pics',null = True)
Serializers
class AttendanceSerializer(serializers.ModelSerializer):
class Meta:
model = Attendance
fields = '__all__'
Views
class AttendanceList(APIView):
def get(self,request):
model = models.Attendance
attendances = model.objects.all()
serializer = AttendanceSerializer(attendances, many = True)
return Response(serializer.data)
def post(self,request):
now = timezone.now()
serializer = AttendanceSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
if serializer.is_valid():
serializer.save(time=now)
# print (serializer.validated_data)
# emp = serializer.validated_data.get("employee")
# obj = models.Attendance.objects.create(time=now, employee=emp)
return Response("Success", status=status.HTTP_201_CREATED)
# return Response(AttendanceSerializer(obj).data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Request
f = open("pic.jpg","rb")
r = requests.post(self.url,data={"employee":ID,"attendace_pic":f})
If I encode f with base64.encodebase64, serializer will allow request.data but it will become None and I can not decode it and if I just pass it without encoding serializer won't allow.
Or I should use FileUploadParser.