I used Django restframework and mongoengine.
Here is my model and serializer.
[model.py]
class Attachment(EmbeddedDocument):
attachment_id = SequenceField()
path = StringField()
path_small = StringField()
class Book(Document):
book_id = SequenceField()
user_id = LongField(required=True)
attachments = ListField(EmbeddedDocumentField(Attachment))
created_at = DateTimeField(default=datetime.now().replace(microsecond=0))
updated_at = DateTimeField(default=datetime.now().replace(microsecond=0))
[serializer.py]
from rest_framework_mongoengine.serializers import DocumentSerializer
from rest_framework.serializers import ImageField
from books.models.mongo import Book
class BookSerializer(DocumentSerializer):
image = ImageField()
class Meta:
model = Appeal
fields = (
'book_id',
'image',
)
Work flow like this.
Upload image to s3
Get s3 path
Save s3 path to
attachments
field in models.py.
So do not defined attachments to ImageField()
in models.py.
Just set image = ImageField()
in serializer to validate it is correct image.
But when I validate with serializer.is_valid()
, image get None
.
[views.py]
class BookList(GenericAPIView):
serializer_class = BookSerializer
queryset = ''
def post(self, request: Request) -> Union[Response, NoReturn]:
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
print(serializer.data)
appeal = CreateAppealInteractor().execute(request=serializer.data)
return Response(status=status.HTTP_200_OK)
As you know that after serializer.is_valid()
, I printed serializer.data.
But it throw None like this -> {'book_id': 1, 'image': None}
Is there any error in my code?
Thanks.