3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
所以我猜您的第一選擇是創(chuàng)建一個(gè)用于搜索的表單,然后呈現(xiàn)帶有結(jié)果的頁面。當(dāng)我們正在討論如何擴(kuò)展它時(shí),很高興看到您如何實(shí)現(xiàn)這一目標(biāo)。
在沒有看到您對(duì)搜索功能的實(shí)現(xiàn)的情況下,我認(rèn)為一個(gè)很好的例子是將搜索從基于表單的搜索轉(zhuǎn)移到查詢語言。
但我們不要超前!畢竟,讓我們以簡(jiǎn)單的方式處理表單吧!
假設(shè)這是你的表格
from django import forms
class MyForm(forms):
title #
author #
genre #
現(xiàn)在,每次標(biāo)題、作者、流派選擇都會(huì)隨請(qǐng)求一起發(fā)送。那么簡(jiǎn)單的方法就是向第二個(gè)表單添加更多內(nèi)容并在渲染時(shí)將當(dāng)前狀態(tài)傳遞給它!
from django import forms
class SecondForm(forms):
title
author
genre
language # new stuff!
因此,當(dāng)您在函數(shù)處理程序/類視圖中獲取當(dāng)前數(shù)據(jù)時(shí),您可以從 MyForm 數(shù)據(jù)創(chuàng)建一個(gè)新表單 SecondForm,您可以在此處閱讀更多信息。
def refine_search(request):
# the form has been submitted so it's a safe assumption to have request.method == 'POSt'
# but this will make it harder to share a link to a search page
# load the search results
# prepare the second form to be rendered on the result page
form = SecondForm(request.POST)
# now your can render your result page passing the form
# and it will be rendered with the state from the previous!

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
我不確定您是否想要在擴(kuò)展過濾器中選擇流派?因?yàn)槿绻堑脑?,我看不到問題......?如果不是,為什么不使用隱藏輸入來傳遞流派呢? forms.CharField(widget=forms.HiddenInput())
添加回答
舉報(bào)