Я делаю проект django, который позволяет определенным пользователям:
* first, upload a file with specified file-type;
* second, use that file to perform some calculations; and
* third, provide a derivative file for download.
Затем пользователь может просмотреть список всех загруженных файлов, включая файлы, загруженные другими пользователями, и выбрать, какие файлыдля загрузки или удаления.
Я создал приложение для управления учетными записями пользователей и другое приложение (ядро) для загрузки файлов и расчетов. Теперь я хочу сохранить загруженный файл в определенном каталоге, чтобы я мог легко получить доступ к файлу для извлечения данных.
Я попытался сделать это:
core_app / models.py
def file_path_dir(instance, filename):
return 'files/{0}/{1}'.format(instance.id, filename)
class Core(models.Model):
id = models.AutoField(primary_key=True, editable=False)
date_created = models.DateField(auto_now_add=True)
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
csv = models.FileField(upload_to=file_path_dir,
validators=[FileExtensionValidator(allowed_extensions=['csv'])]) # NOT SAFE
Здесь я хочу, чтобы файл был загружен в каталог с использованием идентификатора, который будет сохранен в базе данных. Однако вместо этого файл хранился в этом каталоге - files / None / filename.
Я не знаю, почему он говорит «None», когда я успешно сохранил файл в базе данных (используя postgresql). Мне нужна помощь, как решить это или как правильно сделать это, чтобы это работало.
Кроме того, я хотел бы знать самый безопасный / более безопасный способ проверки расширений файлов.