はじめに
Djangoを始めて5時間ほどなので、絶対もっといいやり方がある気がします。
ぜひ教えて下さい。
(一応このコードで動作はしている)
コード
views.py
from .models import Question
from .functions import add_filter
def list(request):
filter_dict = {}
add_filter(filter_dict, request, "question_text__icontains", "text")
add_filter(filter_dict, request, "pub_date__gte", "date_from")
add_filter(filter_dict, request, "pub_date__lte", "date_to")
context = {
"question_list": Question.objects.filter(**filter_dict)
}
return render(request, 'polls/list.html', context)
functions.py
# 検索条件があればセットし、空なら追加しない
def add_filter(filter_list, request, condition, value):
if value not in request.POST:
return
filter_list[condition] = request.POST[value]
おわりに
引数4つも渡すのはちょっと嫌なんだけど、仕方ないかなということで諦める・・。
流石に馴染みのない言語のフレームワークを使うとなると四苦八苦ですが、新しい知識を吸収するのは楽しい