I'm new to Django and Python, and have spent a couple days trying to solve this problem. I've tried several approaches in other threads here, but I think I'm missing some basic concept because none of them have worked for me. Here's what I'm trying to do:
I'm using ModelForm, and I have created a form for adding records that includes a foreign key. I want this value to be set by default to match the record that was displayed on the page I linked from. [Code shown below edited to show suggested corrections].
Here's the relevant code from 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))
Here's the relevant code from 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>
Here's the relevant code from the template I linked from:
<p><a href="/trainapp/add_sighting/?unit={{ unit.id }}">Add sighting</a></p>