Форум сайта python.su
Доброго времени суток, ув. сообщество.
Застопорился на следующей задаче: имеется расширеная модель пользователя, а так же вьюха для изменения личных данных после регистрации. Но не удается сменить аватар.
def get_upload_file_name(instance, filename): return "%s_%s"%(str(time()).replace('.','_'),filename)
class User(AbstractBaseUser): email = models.EmailField( verbose_name='Email address', max_length=45, unique=True, db_index=True, ) username = models.TextField(verbose_name='Nick', max_length=15, unique=True) profession = models.TextField(verbose_name='Profession', max_length=15) avatar = models.FileField(upload_to=get_upload_file_name, blank=True, null=True) profile_vkontakte = models.TextField(verbose_name='Profile in vkontakte', max_length=10, null=True) coordinate_x = models.FloatField(verbose_name='X', null=True) coordinate_y = models.FloatField(verbose_name='Y', null=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] def get_full_name(self): return '%s %s' % (self.first_name, self.last_name,) def get_short_name(self): return self.username def __unicode__(self): return self.email def has_perm(self, perm, obj=None): return True def has_module_perms(self, app_label): return True @property def is_staff(self): return self.is_admin
def edit_personal_information(request): if request.method == "POST" : username = request.POST["username"] profession = request.POST["search_specialist"] coordinate_x = request.POST["coordinate_x"] coordinate_y = request.POST["coordinate_y"] profile_vkontakte = request.POST["profile_vkontakte"] request.user.username = username request.user.profession = profession request.user.coordinate_x = coordinate_x request.user.coordinate_y = coordinate_y request.user.profile_vkontakte = profile_vkontakte request.user.save() return redirect("/personal_information") c = {} c.update(csrf(request)) return render(request, "edit_personal_information.html"
Офлайн
А где в edit_personal_information() вы сохраняете аватар, собственно ??
Офлайн
Сейчас нет времени поискать. Я использовал ModelForm, он умеет записывать файлы. Посмотри его реализацию.
Не забудь
1. передавать RequestContext:
return render_to_response(“myfile.html”,
{…}, context_instance=RequestContext(request))
2. в шаблоне
<form enctype=“multipart/form-data” …>
Офлайн