岡野です。

参考になるかわかりませんが、以下は検索の実装例です。

### 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 にアクセスしてください。

メールによる返信