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: Ответ не проверял, но должен работать