Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Идентификация пользователя при открытии формы [RSS Feed]

#1 Июль 23, 2015 20:08:43

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

Как реализовать автоматическое заполнение скрытого поля формы “user = текущий авторизированный пользователь”?

model

user = models.ForeignKey(User,verbose_name='Пользователь')

forms - так предлагает выбрать из списка пользователей

class ZipForm(ModelForm):
    class Meta:
        model = Zip
        model.subcategory
        fields = ('__all__')

Офлайн

#2 Июль 24, 2015 08:43:16

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

Вам нужно чтобы автоматически выбирался текущий пользователь с возможностью выбора другого или чтобы выбора не было вообще?
Если первый вариант - у класса FormView есть метод get_initial
Если второй вариант - уберите поле user у формы, и если user нужен в форме - передавайте в конструктор параметром



Отредактировано svas (Июль 24, 2015 08:52:18)

Офлайн

#3 Июль 24, 2015 13:51:15

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

svas
Вам нужно чтобы автоматически выбирался текущий пользователь с возможностью выбора другого или чтобы выбора не было вообще?Если первый вариант - у класса FormView есть метод get_initialЕсли второй вариант - уберите поле user у формы, и если user нужен в форме - передавайте в конструктор параметром


Может есть пример как это использовать? Не могу понять как с FormView работать.

Офлайн

#4 Июль 24, 2015 14:38:18

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

Дак а что нужно-то? Первый вариант или второй?



Офлайн

#5 Июль 24, 2015 14:42:38

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

svas
Дак а что нужно-то? Первый вариант или второй?
2й вариант.

Офлайн

#6 Июль 24, 2015 14:54:27

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

Примерно так:

class Form(forms.Form):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(Form, self).__init__(*args, **kwargs)
class MyFormView(FormView):
    form_class = Form
    def get_form_kwargs(self):
        kwargs = super(MyFormView, self).get_form_kwargs()
        kwargs['user'] = self.request.user
        return kwargs
dezinfo
Может есть пример как это использовать? Не могу понять как с FormView работать.
Можно в документации посмотреть
https://docs.djangoproject.com/en/1.8/topics/class-based-views/
конкретно про FormView здесь https://docs.djangoproject.com/en/1.8/topics/class-based-views/generic-editing/
А здесь полнстью описаны все атрибуты и методы https://docs.djangoproject.com/en/1.8/ref/class-based-views/

Также посмотрите на проект django-braces
Там уже есть миксины для вьюх и форм, которые передают пользователя в форму



Офлайн

#7 Июль 25, 2015 14:47:13

dezinfo
Зарегистрирован: 2015-05-23
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Идентификация пользователя при открытии формы

svas
Можно в документации посмотреть
https://docs.djangoproject.com/en/1.8/topics/class-based-views/
конкретно про FormView здесь https://docs.djangoproject.com/en/1.8/topics/class-based-views/generic-editing/

Спасибо получилось, но остался вопрос с передачей значений в переменную(на примере username)в шаблон. Как это сделать через классы?

Так раньше передавал

args['username'] =auth.get_user(request).username
        return render_to_response('addadvert.html', args)

Офлайн

  • Начало
  • » Django
  • » Идентификация пользователя при открытии формы[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version