Форум сайта python.su
django314
так есть же self.user.id.
Или профили не N к N по иду, а как-то по-особому ?
вот тут надо
user = models.ForeignKey(User, related_name=“profile”)
и в инстанса User будет атрибут profile который и будет связанным профилем
Офлайн
не заметил второй страницы :-)
В стандартных формах редактирования и удаления есть инструмент для запрешения
их использования не залогинеными пользователями и “чужими” пользователями? Или лучше всетаки
самому представления с формами писать?
Например, если зашел пользователь c auth_user.id = 12, то он может выполнить правку
только той записи, для которой поле user_id=12.
Табличка с профилем так выглядит:
mysql> show fields from myapp1_exuserprofile;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | UNI | NULL | |
| first_name | varchar(100) | NO | | NULL | |
...
class ExUserProfileFormUpdate(generic.UpdateView): model = ExUserProfile fields = '__all__'
Офлайн
django314
просто сделать url “profile/edit” и выбирать модель на основании self.user.id
надо только в UpdateView переназначить один метод
def get_object(self, queryset=None): return self.request.user
class ExUserProfileFormUpdate(LoginRequiredMixin, generic.UpdateView): login_url = "/signup/" form_class = ExUserRegistrationForm fields = '__all__' def get_object(self, queryset=None): return self.request.user
Офлайн
Singularity
django314просто сделать url “profile/edit” и выбирать модель на основании self.user.id надо только в UpdateView переназначить один метод
Отредактировано django314 (Апрель 24, 2014 15:38:50)
Офлайн
django314
вот вы берете и генерируете форму по модели профиля и у вам надо еще редактировать имя которое в другой модели. Что надо сделать? Надо в эту форму добавить
class UserUpdateForm(RegistrationForm): username = forms.CharField(label = u'Логин:') first_name = forms.CharField(label = u'Имя:') class Meta: model = ExUserProfile
class ExUserProfileFormUpdate(LogiRequiredMixin, generic.UpdateView): def form_valid(self, form): # тут сохраняем return super(ExUserProfileFormUpdate, self).form_valid(form)
Офлайн
Ура! Пошло!
одна таблица:
class ExUserProfileFormUpdate(generic.UpdateView): model = ExUserProfile fields = '__all__' def get_object(self, queryset=None): auth_user = User.objects.get( username = self.request.user.get_username() ) return ExUserProfile.objects.get( user_id = auth_user.id )
Офлайн