Как связать пользователя, зарегистрированного с моделями в форме? - PullRequest
0 голосов
/ 16 мая 2018

У меня проблема. В моем проекте мне нужно связать пользователя, зарегистрированного в формах, с моими моделями. Формы содержат («user_logged», «имя», «описание» и «заключение»), и я хотел бы, чтобы формы автоматически регистрировались пользователем, а другие поля я добавлю вручную. Я пробую это в моих моделях:

user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.CASCADE)

Но я заполняю свои формы и не регистрирую пользователя, результаты для пользователя: «Нет».

Мои взгляды ниже:

@method_decorator(login_required, name='dispatch')
class CreateTarefa(CreateView):
model = Tarefa
fields = ['nome_tarefa', 'descricao', 'concluida']
template_name = 'tarefa_form.html'

Большое спасибо. С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 16 мая 2018

В вашей форме, когда вы просто получаете метод get, добавьте initial значения в форму, как показано ниже:

form = MyForm()
form.initial = {'user_logged':request.user}

или

form = MyForm({'user_logged':request.user})

Для CBVвам просто нужно получить доступ к методу get_form_kwargs() и добавить пользователя logged in:

class CreateTarefa(CreateView):
    model = Tarefa
    fields = ['nome_tarefa', 'descricao', 'concluida']
    template_name = 'tarefa_form.html'


    def get_form_kwargs(self, *args, **kwargs):
         return dict(super(CreateTarefa, self).get_form_kwargs(*args,
                **kwargs),**{'user_logged': self.request.user})
...