drf-впечатляющие объекты, связанные с обратной связью
У меня проблема с обратными связанными объектами в схеме.
Сериализаторы:
class MessageSerializer(serializers.ModelSerializer):
files = FileUploadSerializer(many=True, required=False)
class Meta:
model = Message
fields = ['id', 'sender', 'recipient', 'text', 'is_feedback', 'files']
read_only_fields = ['sender']
def create(self, validated_data):
files = validated_data.pop('files')
message = Message.objects.create(**validated_data)
for file in files:
File.objects.create(message=message, file=file)
return message
class FileUploadSerializer(serializers.ModelSerializer): # noqa
file_uploaded = fields.FileField()
class Meta:
model = File
fields = ['file_uploaded', 'message']
read_only_fields = ['message']
вид не готов, потому что я не могу загружать файлы:
class MessageList(ViewSet):
queryset = Message.objects.all()
serializer_class = MessageSerializer
permission_classes = (IsAuthenticated,)
parser_classes = [MultiPartParser]
def list(self, request):...
def create(self, request):
"""Create a new message where sender is current User and recipient is target User."""
files = request.data.get('files', None)
print(files)
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save(sender=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Основная проблема заключается в том, что объекты (файлы), связанные с обратной связью, отображаются неправильно.
Вместо какого-то массива входных файлов я получил массив json. Что мне делать, чтобы это исправить? Я знаю, что могу сделать это по-другому, например, просто сделать files = serializer.ListField(child=FileField...) и сохранить эти файлы даже без какого-либо сериализатора, но я хочу сделать это как-то правильно = /