我知道我可以通過URL模式傳遞對象值並在視圖函數中使用它們。例如:通過URL傳遞對象數據
(r'^edit/(?P<id>\w+)/', edit_entry),
可以利用這樣的:
def edit_entry(request, id):
if request.method == 'POST':
a=Entry.objects.get(pk=id)
form = EntryForm(request.POST, instance=a)
if form.is_valid():
form.save()
return HttpResponseRedirect('/contact/display/%s/' % id)
else:
a=Entry.objects.get(pk=id)
form = EntryForm(instance=a)
return render_to_response('edit_contact.html', {'form': form})
但我怎麼在URL傳值從模型字段(不是「ID」等)?例如,我有一個抽象基本模型,其中有一個字段「job_number」,由子模型「OrderForm」和「SpecReport」共享。我想點擊訂單上的「工作編號」,併爲相同的工作編號調用規格報告。我可以創建一個
href="/../specifications/{{ record.job_number }}
傳遞信息的url,但我已經知道,這正則表達式語法不正確:
(r'^specifications/(?P<**job_number**>\w+)/', display_specs),
我也不能捕捉在視圖中job_number以同樣的方式我可以一個ID:
def display_specs(request, job_number):
records = SpecReport.objects.filter(pk=job_number)
tpl = 'display.html'
return render_to_response(tpl, {'records': records })
有沒有一個簡單的方法或比它更復雜?
修改後的代碼如下:
(r'^specdisplay/?agencyID=12/', display_specs),
和:
def display_specs(request, agencyID):
agencyID= request.GET.get('agencyID')
records = ProductionSpecs.objects.filter(pk=id)
tpl = 'display_specs.html'
return render_to_response(tpl, {'records': records })
不知道如何過濾。 PK不再適用。
我認爲你唯一剩下的問題是url正則表達式:)之後的所有問號(含)已去。這些被稱爲GET參數,不是匹配的東西的一部分。 – 2010-01-10 22:17:18