Django как называть изображения pk пользователя

У меня есть форма, на основе класса UpdateView:

class UserUpdateView(UpdateView):
    model = User
    fields = ['name', 'text', 'tel', 'adress', 'img', 'name_link_1',
        'link_1','name_link_2', 'link_2','name_link_3', 'link_3',
        'name_link_4', 'link_4','name_link_5', 'link_5',]
    template_name_suffix = '_update_form'

    def get_context_data(self, **kwargs):
        context = super(UserUpdateView, self).get_context_data(**kwargs)
        if not self.request.user.pk == self.object.pk:
            return redirect('login')
        return context

В форме всего одно изображение, которое связанно с одним конкретным пользователем. Я хочу вместо названия загружаемого изображения давать ему название по pk пользователя. Вопрос в том, как мне это сделать?

models.py:

img = models.ImageField('Ваша аватарка', upload_to='images/', blank=True)

Полагаю это может помочь:

def upload_as_pk(instance, filename: str):
    """Загружает файл в новую директрорию
    """
    instance_folder = type(instance).__name__.lower()  # Папка, где хранить изображения
    filename_format = filename.split('.')[-1]  # Формат файла, извлекаете любым удобным способом
    return f'{instance_folder}/{instance.pk}.{filename_format}'

В модели указываете эту функцию в upload_to

img = models.ImageField('Ваша аватарка', upload_to=upload_as_pk, blank=True)

PS: Ответ не проверял, но должен работать

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