Как преобразовать путь, полученный из os.path в путь для поля FileField

Обрабатываю письма из почты, сохраняю файлы вложений, собирая путь самостоятельно

path_attachment = os.path.join(MEDIA_ROOT, 'attachments', PRICE_MAIL_SAVE, supplier_id)

потом добавляю имя файла.

Как этот путь преобразовать для поля FileField

то есть

'S:\\store_server\\trade_project\\media\\attachments\\price_mails\\1771084\\9395_id_Price ORIGINAL (XLSX).xlsx'

преобразовать в

attachments/price_mails/1771084/9395_id_Price ORIGINAL (XLSX).xlsx

Данное решение позволит не менять структуру и логику вашей программы,
как сказал NaughtyFox лучше переписать для использования класса Path из pathlib.

from pathlib import Path


def format_path(path, start_dir='S:') -> str:
    result = start_dir + path.split(start_dir, maxsplit=1)[-1]  # Обрезаем путь до нужной директории
    result = Path(result).as_posix()  # Меняем слэши
    return str(result) 


# Пример
path_now = "S:\\store_server\\trade_project\\media\\attachments\\price_mails\\1771084\\9395_id_Price ORIGINAL (XLSX).xlsx"
print(format_path(path_now, 'attachments'))
Вернуться на верх