我正在尝试使用MultipleChoiceFields创建,我得到了非常奇怪的错误。
这是我的forms.py:
class FilterForm(forms.Form):
def __init__(self, *args, **kwargs):
super(FilterForm, self).__init__(*args, **kwargs)
self.fields['cities'] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=self.get_cities())
self.fields['law_areas'] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=self.get_law_areas())
lawyer_name = forms.CharField(max_length=50)
def get_cities(self):
cities_queryset = []
for lawyer in User.objects.all():
if lawyer.city not in cities_queryset:
cities_queryset.append(lawyer.city)
return cities_queryset
def get_law_areas(self):
return LawArea.objects.all()
这是我的views.py:
def lawyers(request):
if request.method == "POST":
pass
else:
form = FilterForm()
return render(request, "lawyer_directory_v2.html", {"form": form})
最后我尝试在模板中使用我的表单:
{{ form.as_p }}
在这条确切的行上出现了错误:
IndexError at /lawyers/
string index out of range
我不知道如何调试这个或者可能出错的地方。如果您还有其他需要,请告诉我。
答案 0 :(得分:2)
您的get_cities
方法正在返回字符串列表。但ChoiceField需要表单中的元组列表(id,readable_value)。
答案 1 :(得分:0)
这种错误通常来自数据库中缺少的数据。
也许有些用户没有城市?