岡野です。 参考になるかわかりませんが、以下は検索の実装例です。
### forms.py ### from django import forms class SearchForm(forms.Form): """検索フォーム """ kamoku = forms.CharField(max_length=100, required=False) gakunen = forms.PositiveSmallIntegerField(required=False) ### views.py ### # importは省略してます from django.shortcuts import render def search_items(kamoku=None, gakunen=None): """Itemモデルの検索クエリを返します """ filter_params = {} if kamoku: filter_params['item_department__contains'] = kamoku if gakunen: filter_params['item_year__contains'] = gakunen return Item.objects.filter(**filter_params) def search(request): form = SearchForm(request.GET) # ここではGETを使ってますが、仕様によってはPOSTでもいいかもしれません if form.is_valid(): items = search_items( kamoku=forms.cleaned_data['kamoku'] gakunen=forms.cleaned_data['gakunen']) else: items = [] return render(request, "search_item.html", {'form': form, 'items': items}) 2015年6月19日金曜日 18時07分20秒 UTC+9 Kazumin Kazumin: > > 初めまして。 > 私、とある国立大学2年次Kinoshita Kazumiともうします。 > > Djangoで簡易検索エンジンを実装していて、どうしてもわからないことがあるので、 > 投稿しました。 > > 二つのフォームがある検索エンジンを実装しています。 > > 空のフォームの状態で、送信されてると、データベースを全て表示してしまうので、 > request.POST["kamoku"]がもしからなら、データベース検索をするように実装したいです。 > > なので、下記のように実装したのですが、全て表示されてしまいます。 > > どのように書けばよろしいでしょうか? > > viewの中 > <pre> > def search(request): > #postで受け取る > kamoku = request.POST["kamoku"] > gakunen = request.POST["gakunen"] > > #空フォームなのかの判断 > if not " " in kamoku: > kamoku_look = Item.objects.filter(item_department__contains=kamoku) > if not " " in gakunen: > gakunen_look = Item.objects.filter(item_year__contains=gakunen) > > > h = > Context({"kamoku_look":kamoku_look,"gakunen_look":gakunen_look,"kamoku":kamoku}) > > return > render_to_response("search_item.html",h,context_instance=RequestContext(request)) > </pre> > -- -- ----------------- http://djangoproject.jp/ ----------------- You received this message because you are subscribed to the Google Groups "django-ja" group. To post to this group, send email to django-ja@googlegroups.com To unsubscribe from this group, send email to django-ja-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-ja --- このメールは Google グループのグループ「django-ja」の登録者に送られています。 このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com にメールを送信してください。 その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。