djangoでwebアプリを作っています。
IndexError list index out of rangeエラーが表示されます。
該当行は
mail = form_value[2] です。
error
1IndexError at /app/ 2list index out of range 3Request Method: GET 4Request URL: 5Django Version: 2.2 6Exception Type: IndexError 7Exception Value: 8list index out of range 9 10C:\virtualenv\manager\app\views.py in get_queryset 11 return context 12 def get_queryset(self): 13 # sessionに値がある場合、その値でクエリ発行する。 14 if 'form_value' in self.request.session: 15 form_value = self.request.session['form_value'] 16 employeenumber = form_value[0] 17 name = form_value[1] 18 mail = form_value[2] #エラー 19 # 検索条件 20 condition_employeenumber = Q() 21 condition_name = Q() 22 condition_mail = Q() 23 if len(employeenumber) != 0 and employeenumber[0]: 24 condition_employeenumber = Q(employeenumber__icontains=employeenumber)
models.py
1class InfoModelForm(models.Model): 2 employeeid = models.CharField('社員ID',max_length=255) 3 employeenumber = models.CharField('社員番号',max_length=255) 4 name = models.CharField('氏名',max_length=255) 5 kana = models.CharField('氏名(カナ)',max_length=255) 6 mail = models.EmailField('社内アドレス',max_length=255)
views.py
1class IndexView(LoginRequiredMixin, generic.ListView): 2 paginate_by = 20 3 template_name = 'app/index.html' 4 model = InfoModelForm 5 def post(self, request, *args, **kwargs): 6 form_value = [ 7 self.request.POST.get('employeenumber', None), 8 self.request.POST.get('name', None), 9 self.request.POST.get('mail', None), 10 ] 11 request.session['form_value'] = form_value 12 # 検索時にページネーションに関連したエラーを防ぐ 13 self.request.GET = self.request.GET.copy() 14 self.request.GET.clear() 15 return self.get(request, *args, **kwargs) 16 def get_context_data(self, **kwargs): 17 context = super().get_context_data(**kwargs) 18 # sessionに値がある場合、その値をセットする。(ページングしてもform値が変わらないように) 19 employeenumber = '' 20 name = '' 21 mail = '' 22 if 'form_value' in self.request.session: 23 form_value = self.request.session['form_value'] 24 employeenumber = form_value[0] 25 name = form_value[1] 26 mail = form_value[3] 27 default_data = {'employeenumber': employeenumber, # 社員番号 28 'name': name, # 氏名 29 'mail': mail, # 自レベル所属名称 30 } 31 test_form = AccountSearchForm(initial=default_data) # 検索フォーム 32 context['test_form'] = test_form 33 return context 34 def get_queryset(self): 35 # sessionに値がある場合、その値でクエリ発行する。 36 if 'form_value' in self.request.session: 37 form_value = self.request.session['form_value'] 38 employeenumber = form_value[0] 39 name = form_value[1] 40 mail = form_value[2] 41 # 検索条件 42 condition_employeenumber = Q() 43 condition_name = Q() 44 condition_mail = Q() 45 if len(employeenumber) != 0 and employeenumber[0]: 46 condition_employeenumber = Q(employeenumber__icontains=employeenumber) 47 if len(name) != 0 and name[0]: 48 condition_name = Q(name__contains=name) 49 if len(mail) != 0 and mail[0]: 50 condition_mail = Q(mail__contains=mail) 51 return InfoModelForm.objects.select_related().filter(condition_employeenumber & condition_name & condition_mail) 52 else: 53 # 何も返さない 54 return InfoModelForm.objects.none()
employeenumber、nameのみの場合は
エラーが出ず正常に表示されるのですが、
mailを追加するとエラーになります。
mailインデックスがDBに無いのでしょうか?
確認する方法等ございましたらご教示ください。
初歩的な質問で申し訳ございませんが、
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー