Подтвердить что ты не робот

Изображение пользователя Django в модели

Я пытаюсь создать поле в модели, которое должно хранить изображение для зарегистрированного пользователя. Это изображение должно быть переименовано и сохранено в отдельном каталоге пользователя, например media/users/10/photo.jpeg.

Я много искал, но до сих пор не могу найти, как сделать это чисто и правильно. Мне кажется, что многие сайты требуют одинаковой функциональности, и это должно быть в django docs, но это не так.

4b9b3361

Ответ 1

Вы хотите использовать параметр "upload_to" на ImageField

#models.py
import os

def get_image_path(instance, filename):
    return os.path.join('photos', str(instance.id), filename)

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    profile_image = ImageField(upload_to=get_image_path, blank=True, null=True)

Это код непосредственно из моего проекта. Загруженное изображение переходит в /MEDIA_ROOT/photos/<user_id>/filename

Для чего вы хотите просто изменить строку "фотографии" на "пользователей" в def get_image_path

Вот маленький бит об этом в документах, под FileField details

Ответ 2

Я предлагаю вам заглянуть в django-photologue. Это приложение django со всем управлением изображением, загрузкой и хранением уже сделано!

Подробнее о: http://code.google.com/p/django-photologue/

Ответ 3

Вам нужно будет создать модель, которая имеет внешний ключ к модели пользователя, где вы можете иметь поле изображения для пользователя. Я бы не рекомендовал изменять саму модель User.