私はDjangoとPythonを初めて使用し、この問題を解決するために2、3日を費やしました。ここでは他のスレッドでいくつかのアプローチを試しましたが、どれもうまくいかなかったため、いくつかの基本的な概念が欠けていると思います。これが私がやろうとしていることです:
ModelFormを使用しており、外部キーを含むレコードを追加するためのフォームを作成しました。リンク元のページに表示されたレコードと一致するように、この値をデフォルトで設定したいと思います。[以下に示すコードは、提案された修正を示すために編集されました]。
これがviews.pyからの関連するコードです:
def add_sighting(request):
unit = request.GET.get('unit')
form = SightingForm(request.POST or None, initial={'unit':unit})
if form.is_valid():
sighting = form.save(commit=False)
sighting.save()
return redirect(index)
return render_to_response('trainapp/add_sighting_form.html',
{'unit': unit, 'sighting_form': form},
context_instance=RequestContext(request))
add_sighting_form.htmlの関連コードは次のとおりです。
<form action="/trainapp/add_sighting/" method="post">
{% csrf_token %}
<table>
{{ sighting_form.as_table }}
</table>
<input type="submit" value="Save" />
</form>
リンク元のテンプレートの関連コードは次のとおりです。
<p><a href="/trainapp/add_sighting/?unit={{ unit.id }}">Add sighting</a></p>