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

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

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

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

Python

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

Q&A

解決済

1回答

1278閲覧

ModelChoiceFieldを使用し、プルダウンと入力フォームを使った検索フォーム作りたい

hasemma

総合スコア2

Django

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

Python

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

0グッド

0クリップ

投稿2021/07/14 15:24

編集2021/07/14 15:25

前提・実現したいこと

現在、Djangoにてサッカーゲームの選手情報サイトを作成しております。

実現したい内容として、
modelsで入力された選手情報をカテゴリーをプルダウン表示し、
選手名を入力フォームにて検索する機能をつけたいと考えておりますが、
下記エラーが発生し、停滞している状況です。

申し訳ありませんが、
お分かりになる方が居られましたら、
ご教示頂けると幸いです。

宜しくお願い致します。

#models(入力項目が多い為、該当の項目のみ載せております¥。) class Player(models.Model):         #プルダウン表記 player_style = models.CharField('選手タイプ', max_length=20)         #入力フォームにて検索 player_name = models.CharField('選手名', max_length=50)         def __str__(self):                 return self.player_name #forms from django import forms from django.forms import ModelChoiceField from .models import Player class MyModelChoiceField(ModelChoiceField): def label_from_instance(self, obj): return "%i" % obj.player_style + " %s" % obj.player_name #views from .forms import MyModelChoiceField def filters(request): form = MyModelChoiceField(queryset=Player.objects.all()) if(request.method == 'POST'): form = form() player = request.POST['form'] data = Player.objects.filter(player_name=player) msg = '検索結果:'+str(data.count()) else: msg = 'search words...' form = form() #エラーになっている54行目がこちらになります。 data = Player.objects.all() params = { 'title': '選手検索', 'form': form, 'message':msg, 'data':data, } return render(request, 'filters.html', params) #filters.html <h3 class="display-4 text-primary"> {{title}}</h3> <p>{{message|safe}}</p> <form action="{% url 'filters' %}" method="post"> {% csrf_token %} {{ form.as_p }} <tr><th></tr></th> <input type="submit" value="click" class="btn btn-primary mt-2"></td></tr> </form>

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

File "/Users/--------/Library/Python/3.8/lib/python/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/Users/--------/Library/Python/3.8/lib/python/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/ーーーーーー/pes2021/pespost/views.py", line 54, in filters form = form() TypeError: 'MyModelChoiceField' object is not callable

試したこと

検索フォームを作成するにあたり参考にしたサイト。
https://teratail.com/questions/110825

上記エラーになった際に参考にしたサイト。
https://stackoverflow.com/questions/35748734/django-local-variable-form-referenced-before-assignment

ただ、解決する上でイマイチ理解できなかった為、
上手く活用できず、頓挫致しました。。。

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

環境:MAC book Air M1 VScodeを使用

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

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

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

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

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

guest

回答1

0

ベストアンサー

変数form は下記で生成しているので

python

1form = MyModelChoiceField(queryset=Player.objects.all()) 2

54行目を消せばエラーはなくなると思いますが54行目で何をしたいのかが分かりませんでした。

python

1form = form()#エラーになっている54行目がこちらになります。 2

投稿2021/07/22 15:14

odataiki

総合スコア973

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問