-
-
Save manevant/80d13a5b7520ed4ae2fe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if form.is_valid(): | |
| original_name, extension = os.path.splitext(form.cleaned_data['file'].name) # расширение файла из формы | |
| path = os.path.join(settings.MEDIA_ROOT, DIR) | |
| file_name = image_name_resolver(path) # принимает путь, отдаёт верное имя(без расширения) для файла | |
| complete_name = file_name + extension | |
| ... | |
| def image_name_resolver(path): | |
| ''' | |
| Возвращает имя для файла в виде цифры. Если в данной папке уже есть файлы с цифрами, | |
| то будет выдано имя большее на единицу от самого большего числа. Если чисел нет то | |
| будет возвращена единица. | |
| :param path: Путь к директории, куда будет сохранен файл с расчитанным здесь именем | |
| :return: Имя для файла | |
| ''' | |
| file_list = os.listdir(path) # сделать список файлов в этой папке | |
| numbers_list = [] | |
| for item in file_list: | |
| name, ext = os.path.splitext(item) | |
| if name.isdigit(): | |
| numbers_list.append(name) | |
| numbers_list.sort(reverse=True) | |
| if len(numbers_list): # Если список не пуст | |
| last_number = numbers_list[0] # Последний элемент == самый большой | |
| file_name = str(int(last_number) + 1) # имя нашего файла = 1 + последний элемент | |
| else: | |
| file_name = str(1) | |
| return file_name |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment