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

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

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

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

Python

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

Q&A

0回答

410閲覧

select検索でデータkが受け取れない

airi11

総合スコア1

Django

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

Python

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

0グッド

0クリップ

投稿2020/11/12 15:22

前提・実現したいこと

djangoのwebアプリ開発で、同じページでselect検索を2つ実装したいです。

検索機能を利用してrequestでデータを2つ送信したつもりなのですが、データが返ってきません。
htmlでforループを回しているのですが空欄になっているのでデータの受け渡しが出来ていないのかと思います。

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

エラーメッセージは表示されなく、空白になります

該当のソースコード

python

1views.py 2 3def DeviceSearch(request): 4 print("[request method]", request.method) 5 if request.method == "POST": 6 name1 = request.POST.get('phone_name_1') 7 name2 = request.POST.get('phone_name_2') 8 device_model_a = DeviceModel.objects.filter(name__exact=name1) 9 device_model_b = DeviceModel.objects.filter(name__exact=name2) 10 context = { 11 'device_models': (device_model_a, device_model_b) 12 } 13 else: 14 context = {'device_models': DeviceModel.objects.all()} 15 return render(request, 'device_list.html', context)

html

1<form method="POST"> 2 {% csrf_token %} 3 <div class="col-md-8"> 4 <select name="name1" class="browser-default custom-select custom-select-lg mb-3"> 5 <option selected disabled="true">Select iPhone</option> 6 {% for item in device_models %} 7 <option>{{ item.name }}</option> 8 {% endfor %} 9 </select> 10 </div> 11 12 <div class="col-md-8"> 13 <select name="name2" class="browser-default custom-select custom-select-lg mb-3"> 14 <option selected disabled="true">Select iPhone</option> 15 {% for item in device_models %} 16 <option>{{ item.name }}</option> 17 {% endfor %} 18 </select> 19 </div> 20 <br><br> 21 <div class="text-right"> 22 <input type="submit" class="btn btn-dark" value="比較する"> 23 </div> 24</form> 25 26<table class="table table-sm table-bordered"> 27 28 <thead> 29 <tr> 30 ...trの記述 31 </tr> 32 </thead> 33 34 {% for item in device_models %} 35 36 <tbody> 37 <tr> 38 <th scope="row">{{ item.name }}</th> 39 <td> 40 <div class="text-center">{{ item.cpu }}</div> 41 </td> 42 ...for文の続き 43 </tr> 44 </tbody> 45 {% endfor %} 46</table>

こちらのコードでの理想はdropdown形式の検索で name を2つ送信し、その name と一致している2つのモデルを device_list.html で使うことです。

試したこと

.name__exactを icontains に変えてみましたがこちらはエラーが出ました。
.元はdevice_model_a と device_model_b を別々で context に入れていたのを device_models に1つにまとめました。
(最初は {% for item in device_model_a %} と書いていたのでまとめましたが結果は変わりませんでした)
.formタグにvalueを持たせてみましたが変化はありませんでした。
その他沢山の記事を探しましたが、適切なものはありませんでした。

補足情報(FW/ツールのバージョンなど)

python 3.8
dajgno 3

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問