I created a serializer to create a description and a photo:
class ImageFileSerializer(serializers.ModelSerializer):
class Meta:
model = ImageFile
fields = ["image"]
class DescriptionFileSerializer(serializers.ModelSerializer):
image_file = ImageFileSerializer(many=True)
file_filename = serializers.CharField()
user_id = serializers.ReadOnlyField(source="user.id")
class Meta:
model = DescriptionFile
fields = ["pk", 'file_filename', 'user_id', 'title', 'description', 'line_video', 'tags',
'image_file', "time_create"]
read_only_fields = ('time_create',)
by sending a request to this views:
class DescriptionFileView(ModelViewSet):
queryset = DescriptionFile.objects.all().annotate(
file_filename=F("file__filename")
).select_related("user", 'file').prefetch_related("tags", "image_file")
serializer_class = DescriptionFileSerializer
# permission_classes = [IsAuthorOrStaff]
filter_backends = [SearchFilter]
search_fields = ["time_create", "user__id", "tags__name"]
parser_classes = (MultiPartParser, JSONParser)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
I get an error:
{
"image_file": [
"Required field."
]
}
I use this html form to send a request:
<form action="http://localhost:8000/api/description/file/" method="post" enctype="multipart/form-data">
<label for="title">Title:</label>
<input type="text" id="title" name="title"><br><br>
<label for="description">Description:</label>
<textarea id="description" name="description"></textarea><br><br>
<label for="line_video">Line Video:</label>
<input type="text" id="line_video" name="line_video"><br><br>
<label for="tags">Tags:</label>
<input type="number" id="tags" name="tags"><br><br>
<label for="file">File:</label>
<input type="text" id="file" name="file_filename"><br><br>
<label for="image_file">Image:</label>
<input type="file" id="image_file" name="image_file.image"><br><br>
<input type="submit" value="Submit">
</form>
how can I fix the error?
python==3.11.9
django==4.2.11
drf==3.15.1
I searched for a question, found +- similar questions, but they did not help