Как мне получить исходное имя файла, загруженного в поле файл в django

#python #django #django-models

Вопрос:

Я хочу получить доступ к имени файла, загруженного models.FileField() в мой класс.

Вот мой класс

 class extract(models.Model):
    doc = models.FileField(upload_to='files/')
 

Существует ли функция или какой-либо метод для доступа к исходному имени загруженного файла без изменения имени во время загрузки.

например, что-то вроде этого

 name = doc.filename()
 

Правка — 2:

Я очень новичок в джанго и программировании в целом. Так что это может показаться глупым, но я хочу что-то вроде этого:

 class extract(models.Model):
    def get_name(instance,filename):
        path = 'files'
        name = filename      
        return name,path
    
    doc = models.FileField(fname,upload_to==get_name)
    
    def ex(fname):
        path0 = "E:/Projects/PDF Converter/pdf/files/"
        fullpath = path0   fname
        document = open(fullpath)
        reader = PyPDF2.PdfFileReader(document)
        page1 = reader.getPage(0)
        data = page1.extractText()
        return data
    
    text = models.TextField(default=ex(fname),editable=False)
 

Комментарии:

1. Это совсем не то, как вы используете default= . Кроме того, у вас есть опечатка в вашем upload_to

Ответ №1:

Согласно документации, это может быть достигнуто путем передачи функции обратного вызова в качестве upload_to аргумента, и функция обратного вызова будет вызвана с заданным именем файла в качестве второго аргумента:

 def get_filename(_, filename):
    print(filename) # or do whatever you want with the original filename here
    return 'files/'

class extract(models.Model):
    doc = models.FileField(upload_to=get_filename)
 

Комментарии:

1. Я отредактировал свой вопрос, не могли бы вы, пожалуйста, попытаться помочь мне с этим

2. Не уверен, чего вы хотите от своего недавно опубликованного кода. Если вы хотите, чтобы текстовое поле было предварительно заполнено именем файла, это невозможно, так как аргумент по умолчанию задается при определении класса, а не при загрузке файла пользователем.

3. Хорошо, что я хочу, это переменная, которая содержит имя загруженного файла для каждого объекта извлечения класса