DjangoのModelChoiceFieldで特定カラムの値を選択肢として表示させたい
Djangoを使用して検索画面の作成を行っています。
フリーワードとプルダウンの2種類のフォームから検索をかけて結果を表示する形式の機能です。
その際、プルダウンフォームの選択肢がmodels.pyのdef __str__で選択されているカラムで固定されてしまっています。
プルダウンに特定のカラムの値を登録する方法をご存じの方がいらっしゃいましたらご教授いただきたいです。
該当のソースコード
#searchapp/forms.py from django import forms from . import models from .models import CategoryTBL class GoodsSearchForm(forms.Form): #プルダウン categoryname = forms.ModelChoiceField( models.CategoryTBL.objects, #queryset=CategoryTBL.values_list('categoryname', flat=True), label = '商品名', required = False, ) #フリーフォーム入力 searchchar = forms.CharField( initial = '', label = '検索文字列', required = False, ) #searchapp/models.py class CategoryTBL(models.Model): """商品モデル""" class Meta: # テーブル名を定義 db_table = 'categorytbl' #現在プルダウンに表示されているカラム⇓⇓ categoryid = models.CharField( verbose_name = 'カテゴリID', primary_key=True, max_length = 12, ) highcategoryid = models.ForeignKey( 'HighCategoryTBL', to_field='highcategoryid', on_delete=models.CASCADE, null=False, verbose_name = '上位カテゴリID', ) #プルダウンに表示させたいカラム⇓⇓ categoryname = models.CharField( verbose_name = 'カテゴリ名', max_length = 15, ) # 管理サイトに表示させる文字列を定義 def __str__(self): return self.categoryid
試したこと
プルダウンのmodelchoicefieldにquerysetのオプションを追加する(コメントアウトしてあります。)
補足情報(FW/ツールのバージョンなど)
Django2.1.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/17 09:18