понедельник, 12 ноября 2012 г.

Программное назначение значения полю ImageField

Не так давно мне потребовалось задать по умолчанию аватар для нового зарегистрированного пользователя. Для этого после регистрации пользователя подцеплял ему заранее заготовленный для этих целей файл следующим способом:

path = 'path/to/image'
instance.fieldname = instance.fieldname.field.attr_class(instance, instance.fieldname.field, path)

Рассмотрим на примере:
Пусть файл лежит в папке /media/avatars/default.jpg, тогда path='avatars/default.jpg'.
#model:
class UserModel(models.Model):
    login = models.CharField(max_length = 255, verbose_name=u'Логин')
    password = models.CharField(max_length = 255, verbose_name=u'Пароль')
    photo = models.ImageField(upload_to= '/media/',verbose_name=u'Фото',null=True, blank=True)


#Создаем пользователя без фото:
u = UserMode(
        login = 'login',
        password = 'password' 
        )

#Указываем путь к файлу:
path='avatars/default.jpg
#Приписываем фото по умолчанию
u.photo = u.photo.field.attr_class(u, u.photo.field, path)
#сохраняем в базу
u.save()
Теперь у нас есть пользователь, с присвоенным по умолчанию аватаром.
Тоже самое работает и для обычных FileField

Кстати, о джанге, за 1 вечер написал движок для сайта со смешными котами http://catlol.ru/

Комментариев нет:

Отправить комментарий