Для вывода списка загруженных документов и возможности добавления файлов я использую класс
class DocumentsListView(AwsUrlMixin, viewsets.ViewSetMixin, generics.ListCreateAPIView):
queryset = Documents.objects.all()
serializer_class = DocumentsSerializer
permission_classes = (IsAuthenticated, LifeLinePermissions)
pagination_class = None
def perform_create(self, serializer):
serializer.save(author=self.request.user)
serializers.py
class DocumentsSerializer(AwsUrlMixin, serializers.ModelSerializer):
type_name = serializers.CharField(source='type.type', read_only=True)
type = serializers.PrimaryKeyRelatedField(queryset=Doctype.objects.all())
view_file = serializers.SerializerMethodField()
author = serializers.CharField(source='author.username', read_only=True)
created = serializers.DateTimeField(format=date_format, input_formats=None, default_timezone=None, read_only=True)
class Meta:
model = Documents
fields = ('id', 'author', 'filename', 'datafile', 'type', 'type_name', 'created', 'view_file')
models.pyclass Documents(models.Model):
""" uploaded documents"""
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
upload = models.FileField(storage=PrivateMediaStorage())
filename = models.CharField(_('documents name'), max_length=255, blank=True, null=True)
datafile = models.FileField()
created = models.DateTimeField(auto_now_add=True)
type = models.ForeignKey(Doctype, on_delete=models.CASCADE, blank=True)
Использую стандартный интерфейс DRF у меня все нормально отображается и добавляются новые файлы в базу.
Читая доки я наткнулся на парсеры, такие как MultipartParser, FileUploadParser, которые так же используются при добавлении новых файлов.
Я не могу панять когда ими надо пользоваться и какую функцию они выполняют, ведь сейчас и без них все работает.
Есть в доках такая фраза
FileUploadParser
используется с native клиентом, который может загружать файл
в виде необработанных запросов. Для web-based загрузок, или для native
клиентов с поддержкой многокомпонентной загрузки, вы должны использовать
парсер MultiPartParser
но она не дала мне четкого понимания контекста использования
Буду благодарен если проясните для меня этот вопрос