Django Summernote плагин загрузки изображения по userid

Я использую плагин Summernote для Django, и моя цель - позволить пользователям загружать медиафайлы внутри сервера. На данный момент файлы организованы (по умолчанию) в папке, названной по дате загрузки. Что-то вроде:

  • «ProjectName/media/django-summernote/2024-10-11/989d2f98-ad3c-47d6-9c07-e5f6d0c731e6.png»
  • «ProjectName/media/django-summernote/2024-10-17/13d646b8-d7cd-4e04-a76a-804a1ee0d090.jpg».

Возможно ли изменить путь и включить в него user_id? Что-то вроде

  • «ProjectName/media/django-summernote/User100/989d2f98-ad3c-47d6-9c07-e5f6d0c731e6.png»
  • «ProjectName/media/django-summernote/User200/13d646b8-d7cd-4e04-a76a-804a1ee0d090.jpg».

Что я сделал

Я сделал эти правки в файле settings.py

# Summernote plugin
def summernote_upload_to(request, filename):
 user = request.user
    
    # Create the dynamic path
 upload_path = f'user_upload/{user}'
    return os.path.join(upload_path)

SUMMERNOTE_CONFIG = {
    'attachment_upload_to': summernote_upload_to,
    'summernote': {
        'attachment_filesize_limit': 200 * 1000 * 1000, # specify the file size
        'width': '100%',
        'height': '480',
 }
}

но когда я загружаю изображение, я получаю ошибку

AttributeError: у объекта 'Attachment' нет атрибута 'user'

Я понимаю, что вы хотите настроить путь загрузки Summernote, чтобы он включал идентификатор пользователя вместо даты. Ошибка возникает из-за того, что функция attachment_upload_to получает параметры, отличные от ожидаемых. Позвольте мне помочь вам исправить это. Вот шаги, которые вы можете выполнить для решения проблемы

1.Создает пользовательскую модель вложения, включающую информацию о пользователе 2.Изменяет путь загрузки, чтобы включить идентификатор пользователя 3.Обеспечивает доступность информации о пользователе во время загрузки файла 4.Сохраняет уникальность имени файла на основе UUID 5.Обеспечивает резервное копирование для анонимных загрузок

Теперь файлы будут сохраняться по таким путям, как:

ProjectName/media/django-summernote/User100/uuid-filename.png ProjectName/media/django-summernote/User200/uuid-filename.jpg

Помните об осторожности при работе с существующими файлами и миграциями, если вы применяете это в проекте, в котором уже есть загруженные файлы.

Если вам нужен сниппет кода, свяжитесь со мной; я предоставлю подробный код, но я уверяю, что приведенный выше код будет работать, потому что он работает на моем домене

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