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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

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

Q&A

0回答

933閲覧

Django python form_valid でテンプレートに引数を渡したい

akane_emo

総合スコア30

Django

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

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

0グッド

0クリップ

投稿2021/11/02 01:52

前提・実現したいこと

ドロップリストを選択させて検索ボタンを押すとドロップリストで選択した項目を
データベースから取得してデータを表示するという機能を作成しようと思っています。

form_validを使用して作成しようとしておりデータベースから取得した値を引数でテンプレートに渡したいのですが
どのようにすれば良いか教えて頂けますでしょうか。

試したこと

def postで処理していたときはrenderを使用して引数を渡していました。
def form_validでreturnでrenderを使用すると添付画像にあるように実行後form_classで設定したformが
有効にならなくなってしまいました。
form_validを調べると通常はreturnをsuper().form_valid(form)で返すようなのですが、これだと実行後も
テンプレートが崩れることはないのですが引数が渡せません。。(方法がわかりません)

get_context_dataのオーバーライドも試しはしたのですが上手くいきませんでした。。
イメージ説明

該当のソースコード

views

1class IndexStock(LoginRequiredMixin,FormView): 2 3 template_name = 'StockManagement/index.html' 4 form_class = SelectForm 5 success_url = reverse_lazy('StockManegement_index') 6 7 8 def __init__(self): 9 self.params = { 10 'data': 'Obj', 11 } 12 13 def form_valid(self, form): 14 15 # ドロップリストから値を取得 16 RepositoryGroup = form.cleaned_data['Repository'] 17 18 # データベースから値を取得 19 ItemObject = Stock.objects.all().filter(Repository__RepositoryName=RepositoryGroup) 20 self.params['data'] = ItemObject 21 22 return render(self.request, 'StockManagement/index.html', self.params) # <- こっちは引数は渡せるがテンプレートが崩れる 23 #return super().form_valid(form) <- こっちだとテンプレートは正常だが引数の渡し方がわからない 24

補足情報

参考に教えて頂きたいのですが、今回の項目を選択後結果を表示のような構成画面でFormViewを使用しましたがFormViewだとページネーションを自分で記述しないといけません。
ListViewとFormMixinを使用すればよいかなとも思ったのですが、ページ表示時は検索ボタンを押すまで何も表示したくはなく(ListViewを使用すると表示時に設定したmodelが表示されてしまう)、get_querysetで別処理をした場合は結局paginate_byが使用できずに自分でページネーションを記述しないといけない(私の現在の知識での認識です)のでFormViewを選びました。

今回のような画面構成はよくあると思いますが皆様はどのような構成で作成されているか参考に教えて頂けますでしょうか。よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問