Найти - Пользователи
Полная версия: Идентификация пользователя при открытии формы
Начало » Django » Идентификация пользователя при открытии формы
1
dezinfo
Как реализовать автоматическое заполнение скрытого поля формы “user = текущий авторизированный пользователь”?

model

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

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

class ZipForm(ModelForm):
    class Meta:
        model = Zip
        model.subcategory
        fields = ('__all__')
svas
Вам нужно чтобы автоматически выбирался текущий пользователь с возможностью выбора другого или чтобы выбора не было вообще?
Если первый вариант - у класса FormView есть метод get_initial
Если второй вариант - уберите поле user у формы, и если user нужен в форме - передавайте в конструктор параметром
dezinfo
svas
Вам нужно чтобы автоматически выбирался текущий пользователь с возможностью выбора другого или чтобы выбора не было вообще?Если первый вариант - у класса FormView есть метод get_initialЕсли второй вариант - уберите поле user у формы, и если user нужен в форме - передавайте в конструктор параметром


Может есть пример как это использовать? Не могу понять как с FormView работать.
svas
Дак а что нужно-то? Первый вариант или второй?
dezinfo
svas
Дак а что нужно-то? Первый вариант или второй?
2й вариант.
svas
Примерно так:
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
Там уже есть миксины для вьюх и форм, которые передают пользователя в форму
dezinfo
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB