2

私はdjangoモデルフォームを使用しています。フォームはサインアップしていないユーザーでも入力できますが、送信するにはユーザーがサインアップする必要があります。ここに私のモデルがあります:

class Study(model.Model):
    marksobtained = models.CharField(max_length=5)
    highestmarks = models.CharField(max_length=5)
    teacher = models.CharField(max_length=300)

class StudyForm():
   some customisation stuff. 

そして、views.py

form = StudiesForm(request.POST or None,
                       instance=id and Studies.objects.get(id=id))
if form.is_valid():
      form.save()
      return render(request, 'calculate.html', {'detail': ret_dict, 'amt': amt})
      else:
          return render(request, 'forms.html', {'form':form})
    else:
          return render(request, 'forms.html', {'form':form})

ビューのインデントやその他のものについて気にしないでください。これは、私がやろうとしていることの単なるモデルです。今のところ、匿名ユーザーはフォームを送信できることがわかります。ユーザーがフォームを送信すると、まずサインアップしてから、データをモデルに追加する必要があります。

これはどのように実装できますか?

4

2 に答える 2

1

ユーザーが認証されていない場合は、フォームデータをセッションに保存します。

次に、ユーザーをシステムに記録します。

次に、フォームデータをセッションから引き出し、認証されたユーザー情報を取得して情報を保存します。

于 2012-03-01T10:07:34.857 に答える
0
  1. Make user FK not required. Save model.
  2. If request.user.is_authenticated() get him a cookie with id of created model. Redirect him on login page.
  3. For each user check if there is a cookie with model id, attach user to model, save.
于 2012-03-01T10:08:07.927 に答える