我有一个搜索表单
class PostSearchForm(forms.Form):
keyword = forms.CharField(label=_('Search'))
def __init__(self,*args,**kwargs):
self.request = kwargs.pop('request', None)
super(PostSearchForm,self).__init__(*args,**kwargs)
raise Exception(self.request) # This returns none
categories = Category.objects.filter(status=True)
self.fields['categories'] = forms.ModelChoiceField(queryset=categories, widget=forms.SelectMultiple(attrs={'class': 'some-class'}))
每当进行搜索时,我都会构建一个默认值为其搜索内容的表单,所以我尝试的是在表单init中获取url参数并设置值但是返回无由于一些错误。谁能告诉我哪里错了
更新问题
views.py
def get(self,request,category,*args,**kwargs):
search_form = PostSearchForm()
return render(request,self.template_name,{'search_form':search_form})
模板
<form method="get" action="." id="searchForm">
{{ search_form.keyword }} # When searched then the value should be searched term
{{ search_form.categories }}
</form>
网址
http://example.com/?keyword=test
在表单中,我需要将测试显示为值
答案 0 :(得分:1)
除非你把它传递给对象,否则什么都不能进入。如果您想要对象中的请求,请传递它:
search_form = PostSearchForm(request=request)
然而,这对任何方式都无法帮助你而且我对你认为它的原因感到困惑。如果您想传递表单的初始数据,请执行以下操作:
search_form = PostSearchForm(initial={'categories': categories, 'keyword': keyword})