下の画像のように、絞り込み検索で、「優先度」をhighにするとタスクの優先度が高いもの(タスクの周りが赤い)のみが表示されるようになるのですが
![
ページ移動すると、下の画像のように、検索結果が保持されず元の2ページ目が表示されてしまいます。(ページの数が増えているので、全件検索になっている。)これは、それぞれのページのurlを見ても明らかです
この問題を解決するつまり検索結果をページ移動しても保持し続けるにはどうすればよいでしょうか?
それぞれのコードはこちらです
pagination
1{% load static %} 2{% block customcss %} 3 <link rel='stylesheet' href="{% static 'style.css' %}"> 4{% endblock customcss %} 5 6<div class="page"> 7 <ul class="pagination"> 8 <!-- 前へ の部分 --> 9 {% if page_obj.has_previous %} 10 <li class="page-item"> 11 <a class="page-link" href="?page={{ page_obj.previous_page_number }}"> 12 <span aria-hidden="true">«</span> 13 </a> 14 </li> 15 {% else %} 16 <li class="page-item"> 17 <a class="page-link" href="#"> 18 <span aria-hidden="true">«</span> 19 </a> 20 </li> 21 {% endif %} 22 23 <!-- 数字の部分 --> 24 {% for num in page_obj.paginator.page_range %} 25 {% if page_obj.number == num %} 26 <li class="page-item active"><a class="page-link" href="#!">{{ num }}</a></li> 27 {% else %} 28 <li class="page-item"><a class="page-link" href="?page={{ num }}">{{ num }}</a></li> 29 {% endif %} 30 {% endfor %} 31 32 <!-- 次へ の部分 --> 33 {% if page_obj.has_next %} 34 <li class="page-item"> 35 <a class="page-link" href="?page={{ page_obj.next_page_number }}"> 36 <span aria-hidden="true">»</span> 37 </a> 38 </li> 39 {% else %} 40 <li class="page-item"> 41 <a class="page-link" href="#"> 42 <span aria-hidden="true">»</span> 43 </a> 44 </li> 45 {% endif %} 46 </ul> 47</div> 48
views
1from django.shortcuts import render 2from django.views.generic import ListView,CreateView,UpdateView 3from .models import TodoModel 4from django.urls import reverse_lazy 5from django_filters.views import FilterView 6from .filters import TodoFilter 7from django.shortcuts import redirect 8from .form import TodoForm 9from django.conf import settings 10import datetime 11from django.core.mail import send_mail 12# Create your views here. 13 14class TodoList(FilterView): 15 template_name = 'list.html' 16 model = TodoModel 17 paginate_by = 10 18 19 filterset_class = TodoFilter 20 strict = False 21 22 def get(self, request, **kwargs): 23 if request.GET: 24 request.session['query'] = request.GET 25 else: 26 request.GET = request.GET.copy() 27 if 'query' in request.session.keys(): 28 for key in request.session['query'].keys(): 29 request.GET[key] = request.session['query'][key] 30 31 return super().get(request, **kwargs) 32 33# 削除ボタンの処理 34 def post(self,request): 35 delete_pk = request.POST['delete'] 36 TodoModel.objects.filter(pk=delete_pk).delete() 37 return redirect('list') 38 39# 通知処理 40 nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') 41 time = datetime.datetime.strptime(nowtime,'%Y-%m-%d %H:%M') 42 todo_obj = TodoModel.objects.all() 43 for obj in todo_obj: 44 if time == (obj.duedate - datetime.timedelta(minutes=1)): 45 subject = 'タイトル:{}'.format(obj.title) 46 massege = 'メモ:{}\n期日:{}\nカテゴリ:{}\n'.format(obj.memo,obj.duedate,obj.category) 47 from_mail = [] 48 recipient = [settings.EMAIL_HOST_USER] 49 send_mail(subject, massege, from_mail, recipient) 50 51class TodoCreate(CreateView): 52 template_name = 'create.html' 53 model = TodoModel 54 form_class = TodoForm 55 success_url = reverse_lazy('list') 56 57 58class TodoUpdate(UpdateView): 59 template_name = 'update.html' 60 model = TodoModel 61 fields = ('title','memo','priority','duedate','category') 62 success_url = reverse_lazy('list') 63
filter
1from django_filters import filters 2from django_filters import FilterSet 3from .models import TodoModel 4 5class TodoFilter(FilterSet): 6 title = filters.CharFilter(label='タイトル',lookup_expr='contains') 7 8 class Meta: 9 model = TodoModel 10 fields = ('title','priority','duedate','category') 11
回答1件
あなたの回答
tips
プレビュー