質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1057閲覧

【django2】2つある検索フォームの処理を別々にしたい

nre

総合スコア35

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/08/27 04:57

前提・実現したいこと

html上に検索フォームが2つあり、検索フォームごとに検索領域を変えたいです。
現在2つの内、1つがドロップダウンから条件を検索する物で、もう一つがテキストタイプとなっております。
ドロップダウンの検索フォームはmodelのskillの検索結果を
テキストタイプの検索フォームはmodelのnick_nameとself_introductionの検索結果を表示したいです。

発生している問題・エラーメッセージ

現在発生している問題は検索領域が検索フォームごとに別々にする事が出来なくて、検
索結果が混同してしまっている事です。

該当のソースコード

python

1【views.py】 2 3class AistView(generic.ListView): 4 model = User 5 template_name = 'register/top.html' 6 paginate_by = 8 7 8 def get_queryset(self): 9 result = super(AistView, self).get_queryset() 10 query = self.request.GET.get('q') 11 12 if query: 13 result = User.objects.filter(Q(skill__icontains=query) | Q(self_introduction__icontains=query)) 14 15 return result 16 17【models.py】 18 19SKILLS = ( 20 ('1', 'Webデザイナー'), 21 ('2', 'PG(フロントサイド)'), 22 ('3', 'PG(サーバーサイド)'), 23) 24 25class User(AbstractBaseUser, PermissionsMixin): 26 nick_name = models.CharField(_('ニックネーム'), max_length=30, blank=False) 27 skill = models.CharField(('スキル'), max_length=150, choices=SKILLS, blank=True) 28 self_introduction = models.CharField(_('自己PR'), max_length=500, blank=True)

html

1<div class="btn-group"> 2<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 3 スキルで絞り込む 4 </button> 5 <form class="form-inline my-2 my-lg-0" action=" " method="get" accept-charset="utf-8"> 6 <div class="dropdown-menu"> 7 <button class="dropdown-item" type="submit" value="1" name="q">Webデザイナー</button> 8 <button class="dropdown-item" type="submit" value="2" name="q">PG(フロントサイド)</button> 9 <button class="dropdown-item" type="submit" value="3" name="q">PG(サーバーサイド)</button> 10 11 </div><!-- /.dropdown-menu --> 12 </form> 13 </div><!-- /.btn-group --> 14 <form class="form-inline my-2 my-lg-0" action="" method="get" accept-charset="utf-8"> 15 <input type="search" class="form-control mr-sm-2" placeholder="キーワードで検索" name="q" aria-label="検索..."> 16 <button type="submit" class="btn btn-outline-info my-2 my-sm-0">検索</button> 17 </form>

試したこと

htmlのformのnameをqとq2に分けたり、viewsの部分にさらにifを追加しましたがうまく作動しませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Pythonは分かりませんが、
actionが同じである限り同じ先にform内容送信するので、
actionを別々にしては如何でしょうか。

※ちなみにformが分かれている以上、1リクエストで1form分しか処理できませんが、それは良いんですよね?

投稿2019/08/27 05:11

編集2019/08/27 05:12
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nre

2019/08/27 05:51

大変お忙しい中、ご回答して頂き誠にありがとうございました。 仰る通りactionを別々にし、urls.pyにパスを通し処理を改めて書き込む事でやりたい事が実現いたしました!ありがとうございました!
m.ts10806

2019/08/27 05:52

解決されたようで何よりです。 ※もし肥大化するようでしたら同じnameで別valueを持たせたhiddenを渡して同じコントローラ内で分岐させるのもありあと思います。
guest

0

html

1<div class="btn-group"> 2 <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 3 スキルで絞り込む 4 </button> 5 <form class="form-inline my-2 my-lg-0" action="" method="get" accept-charset="utf-8"> 6 <div class="dropdown-menu"> 7 <button class="dropdown-item" type="submit" value="1" name="q">Webデザイナー</button> 8 <button class="dropdown-item" type="submit" value="2" name="q">PG(フロントサイド)</button> 9 <button class="dropdown-item" type="submit" value="3" name="q">PG(サーバーサイド)</button> 10 </div><!-- /.dropdown-menu --> 11 </form> 12 </div><!-- /.btn-group --> 13 <form class="form-inline my-2 my-lg-0" action="/search" method="get" accept-charset="utf-8"> 14 <input type="search" class="form-control mr-sm-2" placeholder="キーワードで検索" name="q" aria-label="検索..."> 15 <button type="submit" class="btn btn-outline-info my-2 my-sm-0">検索</button> 16 </form>

python

1urls.py 2path('search/', views.ListView.as_view(), name='top'),#追加 3 4views.py 5#追加 6class ListView(generic.ListView): 7 model = User 8 template_name = 'register/top.html' 9 paginate_by = 8 10 11 def get_queryset(self): 12 result = super(ListView, self).get_queryset() 13 query = self.request.GET.get('q') 14 15 if query: 16 result = User.objects.filter(Q(nick_name__icontains=query) | Q(self_introduction__icontains=query)) 17 18 return result 19

投稿2019/08/27 05:54

nre

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問