Django 如何将登录的用户与表单中的模型关联?
我有个问题。在我的项目中,我需要将登录表单的用户与我的模型相关联。表单包含('user_logged'、'name'、'description'和'conclusion'),我希望表单自动记录用户日志,以及其他我将手动放置的字段。我在我的模型中尝试了这一点:Django 如何将登录的用户与表单中的模型关联?,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我有个问题。在我的项目中,我需要将登录表单的用户与我的模型相关联。表单包含('user_logged'、'name'、'description'和'conclusion'),我希望表单自动记录用户日志,以及其他我将手动放置的字段。我在我的模型中尝试了这一点: user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.CASCADE) 但我填写表格,不让我的用户登录,用户的
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'
非常感谢。
最美好的祝愿。在您的表单中,您只需接收
get
方法,然后向表单中添加initial
值,如下所示:
form = MyForm()
form.initial = {'user_logged':request.user}
或
对于CBV,您只需访问get\u form\u kwargs()
方法并添加登录的用户:
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})
嗯,我试过这个。不工作,Django需要为变量'user_loged'创建init,并且不知道我将在哪里创建init以及如何创建它。你能帮助我如何创建这个init以及在哪里创建吗?谢谢我的朋友错误:uuu init_uuuuuuuuu()得到一个意外的关键字参数“user\u logged”。如果您尝试过,您得到的错误是什么?显示方法此错误:网页:TypeError at/create\u tarefa/\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuu()在控制台:文件“C:\Users\Matheus Soares\ProjetoIlhaSoft\venv\lib\site packages\django\views\generic\edit.py”,第33行,在get\form返回表单类(**self.get\u表单\kwargs())TypeError:\uuu init使用FBV获得了一个意外的关键字参数“user_logged”。它非常简单,您可以使用当前代码编辑您的问题,您当前的函数我可以这样做吗?你能给我详细解释一下吗?
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})