14

我有一个模型 Question 带有一个名为userid的字段,在提出问题之前,需要登录,我希望在保存时捕获当前登录用户的用户 ID 并将其分配给 Question 模型的用户 ID。

请注意,我没有在我的表单上显示用户 ID,即在 Question 模型中我声明了用户 ID,如下所示;

类问题(models.Model): ... userid=models.ForeignKey(User, editable=false) ...

如何将登录用户 ID 分配给 Question 模型userid

4

4 回答 4

12

您的代码可能如下所示:

from django.contrib.auth.decorators import login_required

class QuestionForm(forms.ModelForm):
    class Meta:
         model = Question

@login_required
def ask(request):
    form = QuestionForm(request.POST)

    if form.is_valid():
        question = form.save(False)
        question.userid = request.user
        question.save()

    #...
于 2009-01-05T14:17:11.567 回答
2

这篇博文(由 James Bennett 撰写)可能对您也很有用……它提供了一种几乎完全符合您要求的方法。

于 2010-01-19T04:55:22.430 回答
1

对于更新的 - 并且可能会更新 - 资源,我推荐官方 Django 文档。这个例子已经进入了ModelAdmin文档的 ModelAdmin 方法部分。

如果你像我一样,你会很想抓住那个例子并运行,但你可能会从放慢速度,花几分钟阅读,然后实施 - 我当然会......

于 2013-12-26T03:04:48.507 回答
0

要记住的一件事是,如果不绕过 django 的设计约束,您将无法从模型访问请求对象(以及当前用户)。

因此,诸如自动填充 created_by 和 updated_by 等字段的巧妙技巧在 Django 中不起作用。如@Daevaorn 所示,您必须在视图中手动设置此类字段。

于 2009-01-05T18:57:34.810 回答