Я пытаюсь загрузить файл в базу данных, но когда я хочу поставить функцию uoload и я хочу, чтобы эта функция сохраняла файл в корне с данными, которые пользователь отправляет в течение, например, года, курса,В разделе я получаю эту информацию и загруженный файл, который я хочу сохранить в этих подпапках, код, который я использую, хранит только данные в Media_root, но не в коврах. Как это сделать, чтобы хранить файлы вподпапка я хочу.В моем модельном документе я храню информацию о документе, такую как автор, название и т. Д.
class File(models.Model):
titulo_file=models.ForeignKey(Document,on_delete=models.CASCADE,null=True,verbose_ name='Título de la Tesis')
file = models.FileField(null=True,blank=True, upload_to=generate_path)
Здесь функция, которую я использую для загрузки файла, Int работает только для сохранения файла впапка с тем же именем.
def generate_path(instance, filename):
path =os.path.join(instance.file.name,filename)
return path
На мой взгляд, после того, как пользователь отправил информацию, я использую os.path.join
, который делает путь с информацией, отправленной следующим образом:
year/course/section
Я хочу отправить этот путь в мой generate_path и сохранить в этом месте файл, я пытался с сеансом, но он не работает, что мне делать?
models.py
class Year(models.Model):
year_number=models.CharField(max_length=10,primary_key=True)
class Course(models.Model):
name=models.CharField(max_length=50,primary_key=True)
class Section(models.Model):
numberSection=models.IntegerField(null=True,blank=True)
year = models.ForeignKey(Year, on_delete=models.CASCADE, null=True)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
thopic_documents=(
('CS','CS'),
('SE','SE'),
('IS','IS'),
('IT','IT'),
)
class Document(models.Model):
title=models.CharField(max_length=200,primary_key=True)
thopic=models.CharField(max_length=50,choices=thopic_documents, default=None,null=True)
class Historial(models.Model):
id_section=models.ForeignKey(Section,on_delete=models.CASCADE)
title_document=models.ForeignKey(Document,on_delete=models.CASCADE,)