我的网站可以帮助音乐人们相互连接和借阅/借出他们的乐器。
我的网页上有一个名为InstrumentSearchForm
的表单,您可以按类别,日期和地点搜索工具。
class InstrumentSearchForm(forms.Form):
categories = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple())
date = forms.DateField(required=False)
location = forms.CharField(required=False)
此表单在view
中初始化,并在上下文中传递给模板(我发现了无关紧要的内容)
def main_page(request):
if request.method == 'POST':
....
else:
form_search = InstrumentSearchForm(prefix="search") # An unbound form
args = {}
args.update(csrf(request))
args['form_search'] = form_search
...
categories_to_show = Categories.objects.filter(users = request.user) #show users categories
form_search.fields['categories'].queryset = categories_to_show
return render(request, 'main_page.html', args)
问题是,在模板页面中,当我说
时{{ form_search }}
表单缺少" 类别"小部件。它只有日期和位置框。在源代码中,即使我知道它们存在,它也不会显示任何类别的选择。
我一直试图弄清楚问题是什么,没有结果。有没有人有任何想法?
答案 0 :(得分:0)
我看不出你发布的代码有什么问题,但我会把逻辑放到表格中:
class InstrumentSearchForm(forms.Form):
categories = forms.MultipleChoiceField(queryset=Categories.objects.none(), required=False, widget=forms.CheckboxSelectMultiple())
...
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(InstrumentSearchForm, self).__init__(*args, **kwargs)
self.fields['categories'].queryset = Categories.objects.filter(users=user)
并使用:
实例化它form = InstrumentSearchForm(user=request.user)
这有帮助吗?