14

useridというフィールドを持つモデルの質問があります。質問する前に、ログインする必要があります。保存するときに、現在ログインしているユーザーのユーザー ID を取得し、それを質問モデルのユーザー ID に割り当てます。

私のフォームにユーザーIDを表示していないことに注意してください。つまり、質問モデルで次のようにユーザーIDを宣言しました。

class Question(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 に答える
0

覚えておくべきことの 1 つは、django の設計上の制約を回避しない限り、モデルから要求オブジェクト (したがって現在のユーザー) にアクセスできないという事実です。

したがって、created_by や updated_by などのフィールドを自動的に入力するような巧妙なトリックは、Django では機能しません。@Daevaorn で示されているように、ビューでそのようなフィールドを手動で設定する必要があります。

于 2009-01-05T18:57:34.810 に答える