ページの入力ボックスの表示に問題があります。この同じページに 2 つのビューが必要です。1 つはデータにアクセスして取得するビューで、もう 1 つはフォームです。これはイベントのサインアップ ページであるため、最初のビューは特定のイベントの詳細を表示し、2 番目のビューは特定のユーザーをイベント自体から削除するためのビューです。
私のviews.py
def ShowSpecificEvent(request, eventslug):
if request.method == 'POST':
form = RemovalForm(request.POST)
if form.is_valid():
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
updated_event.save()
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
def Remove(request, eventslug):
if request.method == 'POST':
form = RemovalForm(request.POST)
if form.is_valid():
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
updated_event.save()
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
return HttpResponseRedirect('base_remove_user.html')
私のテンプレート
{% block content %}
event details...
{% if user.is_authenticated %}
{% if event.sign_up_is_live %}
<p><a href= "{% url eventattend event.slug %}"> Sign me up!</a></p>
<form action='' method='post'>
{% csrf_token %}
{% if form.errors %}<p>Please correct the following fields:</p>{% endif %}
<div class='register_div'>
{% if form.for_removal.errors %} <p class='error'>{{ form.for_removal.errors }}</p>{% endif %}
<p><label for='for_removal'{% if form.for_removal.errors %}class='error'{% endif %}>User to be removed:</label></p>
<p>{{ form.for_removal }}</p>
</div>
<p><input type='submit'></p>
</form>
{% endif %}{% endif %}
{% endblock %}
私はこれを読んだことがありますが、これは最も関連性が高いと思いますが、規定された方法は実際には役に立ちません.
2 つのページを分割することも考えましたが、ユーザーの削除ページでイベントラグを取得できません。
前もって感謝します :)
アップデート:
Guttrt の回答は非常に役立ちました。ShowSpecificEvent を次のように変更することで、入力ボックスを表示することができました。
def ShowSpecificEvent(request, eventslug):
event = Event.objects.get(slug=eventslug)
form = RemovalForm(request.POST or None)
context = {'event': event, 'form': form,}
if request.method == 'POST':
if form.is_valid():
updated_event = event.signed_up.remove(request.POST.get('for_removal'))
updated_event.save()
return HttpResponseRedirect('base_user_removed.html')
else:
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
ただし、フォームを送信した後、ValueError (基数 10 の int() の無効なリテラル: 'a_technicolor_skye') が返されます。ここで、a_technicolor_skye は削除しようとしているユーザーです。誰にもアイデアはありますか?ところで、event.signed_up は多対多のフィールドで、null=True と blank=True に設定しました。