同じアプリ内の 2 つのモデル間に ManyToMany 関係があります。これは次のようになります。
class Event(models.Model):
eventID = models.CharField(deafult = random_eventID)
signal = models.ManyToManyField(Signal)
....
....
さて、私のフォーム (ModelForm を使用) では、ページを更新するたびにeventIDフィールドに既にeventIDが入力されています (ページを更新するたびに新しいrandom_eventIDを取得するため)。このように、私のフォームで新しいシグナルを追加することを選択すると(イベントを作成するときにシグナルを追加できるようにしたい)...別のビューに移動します。イベントを保存し、イベント ページに戻ると、eventIDが再び変更されています。さまざまなものを追加した後、イベントページに戻ったときに、ユーザーがフォームに入力/選択したすべてのデータが表示されるようにしたいと考えています。
私が考えた解決策:
1 - 別のページに移動する前に別の列を含めてイベントを保存し、後で元に戻すようにモデルを変更できません。
2 - セッションを使用して、すべてのフィールドに既に存在するすべてのデータを保存し、後でそれを取得します..(この方法では、HTTP はステートレスではなくなりますが、私の目的には役立ちます。)
3 - Ajax は更新を行うのに役立ちますか (私には理解できません)。
セッションを使用して試してみたところ、解決できないこのばかげたエラーに遭遇しました。
ビュー.py
def create(request):
if request.POST:
form = EventForm(request.POST)
form .save()
del request.session['event_id']
return HttpResponseRedirect('/Event')
else:
event_session = request.session.get('event_id')
if event_session is not None:
form = EiEventForm(initial={'eventID' : event_session}
else:
form = EventForm()
request.session['event_id'] = form('eventID').value()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('event.html', args)
上記では、デバッグ後に eventID フィールドの現在の値を取得できません。他の方法もいくつか試しましたが、成功しませんでした。
request.GET.get('eventID') は None を返します..フィールドから値を取得するにはどうすればよいですか?
また、セッション以外で目的の結果を達成するためのより良い方法はありますか?
どんな助けでも大きな助けになるでしょう!