Разделение файлов на основе расширения файла?

Я хочу разделить файлы в моих моделях на основе типа расширения. Сейчас я могу распечатать все файлы, но теперь я хочу разделить их на основе расширения и применить отдельные функции на основе расширений.

Код в моем models.py

class File(models.Model):

title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
doc = models.FileField(upload_to='files/docs/', validators=[FileExtensionValidator(allowed_extensions=['pdf','docx'])])  

и мой код в view.py

def file_p():

for file in File.objects.all():
    print(file.doc)

Я получаю на выходе что-то вроде этого.

files/docs/12.6.1-packet-tracer---troubleshooting-challenge---document-the-network_1s00TUA.docx files/docs/12.6.1-packet-tracer---troubleshooting-challenge---document-the-network_z9b2tyh.pdf

Как я могу разделить их на основе расширения, чтобы я мог применять дальнейшие функции, основанные на типе файла.

Вы можете сделать это с помощью пользовательских функций Model. models.py

class File(modles.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    doc = models.FileField(upload_to='files/docs/', validators=[FileExtensionValidator(allowed_extensions=['pdf','docx'])])
 
    def doc_pdf(self):
        name, extension = os.path.splitext(self.doc.name)
        if 'pdf' in extension:
            return self.doc
    def doc_docx(self):
        name, extension = os.path.splitext(self.doc.name)
        if 'docx' in extension:
            return self.doc

views.py

def file_p():
    for file in File.objects.all():
        #get pdf files
        print(file.doc_pdf)
        #get docx files
        print(file.doc_docx)

Вернуться на верх