Как обрезать строку пути к файлу из модели Django?

В Django для обрезания строки пути к файлу из модели можно воспользоваться функцией os.path.basename().

Давайте предположим, что у нас есть модель с полем file, которое содержит абсолютный путь к файлу. Мы хотим обрезать этот путь, чтобы получить только имя файла без его расположения. Вот как это можно сделать:

import os

from django.db import models


class MyModel(models.Model):
    file = models.FileField(upload_to='uploads/')

    @property
    def file_name(self):
        return os.path.basename(self.file.name)

В этом примере мы создаем модель MyModel с полем file, которое является экземпляром класса FileField. В параметре upload_to указываем папку, в которую будут загружаться файлы.

Для обрезания пути к файлу мы создаем декоратор @property, который позволяет получать значение file_name как атрибут объекта MyModel. В методе file_name мы используем функцию os.path.basename(), чтобы получить только имя файла из полного пути к нему, которое хранится в поле file.name.

Теперь, если у нас есть экземпляр MyModel, мы можем получить только имя файла, вызвав атрибут file_name:

my_model = MyModel.objects.get(id=1)
print(my_model.file_name)

Это выведет только имя файла без его пути.

Таким образом, функция os.path.basename() позволяет обрезать путь к файлу из модели Django и получить только имя файла.