Djnago FileField: Предотвращение сохранения файла в файловой системе при загрузке
У меня есть простое приложение в этом github repo. Там есть готовая база данных.
Существует две модели:
from django.db import models
from django.db.models import FileField
class Task(models.Model):
name = models.CharField(max_length=20)
class TaskAttachment(models.Model):
task = models.ForeignKey(Task, on_delete=models.CASCADE)
file = FileField()
binaries = models.BinaryField()
content_type = models.TextField()
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.binaries = self.file.file.read()
self.content_type = self.file.file.content_type
super().save(force_insert, force_update, using, update_fields)
Примечание: пожалуйста, не спрашивайте, почему я сохраняю файлы в базе данных, а не в файловой системе или s3.
Зарегистрирована модель TaskAttachment в admin:
from django.contrib import admin
from tasks.models import TaskAttachment
class TaskAttachmentAdmin(admin.ModelAdmin):
exclude = ['content_type']
admin.site.register(TaskAttachment, TaskAttachmentAdmin)
Проблемы, с которыми я столкнулся, заключаются в том, что загруженные файлы сохраняются в файловой системе:
Поскольку я сохраняю двоичные файлы в базе данных, я не хочу, чтобы файлы сохранялись в файловой системе.
Как я могу предотвратить сохранение файлов в файловую систему при загрузке файлов и получить содержимое файла из поля binaries базы данных при получении экземпляра модели TaskAttachment?