🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

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

Q&A

解決済

1回答

1373閲覧

ChoiceFieldでvaluesを文字として返したい。

fdd

総合スコア28

Django

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

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

0グッド

0クリップ

投稿2020/12/20 14:55

編集2020/12/22 04:26

問題点

choicesのvaluesを検索文字として使用しようとしているためChoiceの値を文字にしています。しかしchoiceの値が指定した順番の数値として表示されます。
(例)ramentaste =塩  values = 2
下記のサイトを参考にしたのですが理由がわかりません。
ご教授のほどお願いします。

https://qiita.com/mkizka/items/e1011aadbd1b22aca92d

イメージ画像

イメージ説明

ソースコード

python

1 2 #models.py 3 4from django.db import models 5from django.contrib.admin.widgets import AdminDateWidget 6from django import forms 7 8from users.models import User 9 10 11class Item(models.Model): 12 """ 13 データ定義クラス 14 各フィールドを定義する 15 参考: 16 ・公式 モデルフィールドリファレンス 17 https://docs.djangoproject.com/ja/2.1/ref/models/fields/ 18 """ 19 20 21 name = models.CharField( 22 verbose_name='ラーメン店', 23 max_length=20, 24 blank=True, 25 null=True, 26 ) 27 28 name1 = models.CharField( 29 verbose_name='メニュー名称', 30 max_length=20, 31 blank=True, 32 null=True, 33 ) 34 35 name2 = models.CharField( 36 verbose_name='都道府県', 37 max_length=20, 38 blank=True, 39 null=True, 40 ) 41 42 name3 = models.CharField( 43 verbose_name='市区町村', 44 max_length=20, 45 blank=True, 46 null=True, 47 ) 48 49 50 ramen_taste = ( 51 ('醤油', '醤油'), 52 ('塩', '塩'), 53 ('豚骨', '豚骨'), 54 ('味噌', '味噌'), 55 ('鶏白湯', '鶏白湯'), 56 ('つけ麺', 'つけ麺'), 57 ('担々麺', '担々麺'), 58 ('油そば', '油そば'), 59 ) 60 61 # サンプル項目1 ラーメンの味 62 sample_1 = models.TextField( 63 verbose_name='ラーメンジャンル', 64 choices=ramen_taste, 65 blank=True, 66 null=True, 67 ) 68 69 70 # サンプル項目2 満足度合い 71 sample_satisfaction = models.IntegerField( 72 verbose_name='満足度評価', 73 blank=True, 74 null=True, 75 ) 76 77 # サンプル項目3 こってり度合い 78 sample_3 = models.IntegerField( 79 verbose_name='こってりど評価', 80 blank=True, 81 null=True, 82 ) 83 84 # サンプル項目4 辛さ度合い 85 sample_4 = models.IntegerField( 86 verbose_name='からさ評価', 87 blank=True, 88 null=True, 89 ) 90 91 #サンプル項目 麺の太さ 92 ramen_hutosa = ( 93 (1, '極細麺(1.1mm)'), 94 (2, '細麺(1.15mm)'), 95 (3, '中細麺(1.25mm)'), 96 (4, '中太麺(1.4mm)'), 97 (5, '太麺(1.7〜1.875mm)'), 98 (6, '極太麺(2.2〜2.5mm)'), 99 ) 100 101 sample_menhutosa = models.IntegerField( 102 verbose_name='麺の太さ', 103 choices=ramen_hutosa, 104 blank=True, 105 null=True, 106 ) 107 108 # サンプル項目5 値段評価 109 sample_5 = models.IntegerField( 110 verbose_name='値段評価', 111 blank=True, 112 null=True, 113 ) 114 115 #サンプル項目5.1 値段 116 sample_cost = models.TextField( 117 verbose_name='値段', 118 max_length=10, 119 blank=True, 120 null=True, 121 ) 122 123 # サンプル項目6 アクセス 124 sample_6 = models.IntegerField( 125 verbose_name='アクセス評価', 126 blank=True, 127 null=True, 128 ) 129 130 #サンプル項目 URL 131 sample_url = models.URLField( 132 verbose_name='ホームページ', 133 max_length=100, 134 blank=True, 135 null=True, 136 ) 137 138 #サンプル項目8 感想 139 memo = models.TextField( 140 verbose_name='コメント欄', 141 max_length=300, 142 blank=True, 143 null=True, 144 ) 145 146 #サンプル項目9 来店日付 147 date = models.DateField(blank=True, null=True) 148 149 #サンプル項目10 画像 150 image = models.ImageField( 151 upload_to = '', 152 verbose_name='添付画像', 153 null=True, 154 blank=True, 155 ) 156 157 158 159 # 以下、管理項目 160 161 # 作成者(ユーザー) 162 created_by = models.ForeignKey( 163 User, 164 verbose_name='作成者', 165 blank=True, 166 null=True, 167 related_name='CreatedBy', 168 on_delete=models.SET_NULL, 169 editable=False, 170 ) 171 172 # 作成時間 173 created_at = models.DateTimeField( 174 verbose_name='作成時間', 175 blank=True, 176 null=True, 177 editable=False, 178 ) 179 180 # 更新者(ユーザー) 181 updated_by = models.ForeignKey( 182 User, 183 verbose_name='更新者', 184 blank=True, 185 null=True, 186 related_name='UpdatedBy', 187 on_delete=models.SET_NULL, 188 editable=False, 189 ) 190 191 # 更新時間 192 updated_at = models.DateTimeField( 193 verbose_name='更新時間', 194 blank=True, 195 null=True, 196 editable=False, 197 ) 198 199 200 def __str__(self): 201 """ 202 リストボックスや管理画面での表示 203 """ 204 return self.name 205 206 class Meta: 207 """ 208 管理画面でのタイトル表示 209 """ 210 verbose_name = '検索' 211 verbose_name_plural = '検索' 212

html

1#form.html 2 <form method="post" enctype="multipart/form-data"> 3{% extends "./_base.html" %} 4{% block content %} 5 {% load crispy_forms_tags %} 6 <div class="container"> 7 <div id="myModal" class="modal fade" tabindex="-1" role="dialog"> 8 <div class="modal-dialog" role="document"> 9 <div class="modal-content"> 10 <div class="modal-header"> 11 <h5 class="modal-title">検索条件</h5> 12 <button type="button" class="close" data-dismiss="modal" aria-label="閉じる"> 13 <span aria-hidden="true">&times;</span> 14 </button> 15 </div> 16 <form id="filter" method="get"> 17 <div class="modal-body"> 18 {{ filter.form|crispy }} 19 </div> 20 </form> 21 <div class="modal-footer"> 22 <a class="btn btn-outline-dark" data-dismiss="modal">戻る</a> 23 24 <button type="submit" class="btn btn-outline-dark" form="filter">検索</button> 25 </div> 26 </div> 27 </div> 28 </div> 29 <div class="row"> 30 <div class="col-12"> 31 <a class="btn btn-secondary filtered" style="visibility:hidden" href="/?page=1">検索を解除</a> 32 <div class="float-right mt-1"> 33 <a class="btn btn-outline-dark" href="{% url 'create' %}">新規</a> 34 35 <form action=""method="get"> 36 <input name="query" value="{{ request.GET.query }}" type="text"> 37 <button type="submit">検索する</button> 38 </form> 39 40 41 </div> 42 </div> 43 </div> 44 45 <div class="row mt-3"> 46 <div class="col-10 mx-auto"> 47 {% include "./_pagination.html" %} 48 </div> 49 </div> 50 51 <div class="row"> 52 <div class="col-12"> 53 <ul class="list-group"> 54 {% if item_list %} 55 {% for item in item_list %} 56 <li class="list-group-item"> 57 {# item_detail_contents.html を参考に必要な項目を追加してください #} 58 59 <div class="row"> 60 <div class="col-5 col-sm-3"> 61 <p>1_ラーメン店</p> 62 </div> 63 <div class="col-7 col-sm-9"> 64 <p>{{ item.name | default_if_none:"未入力" }}</p> 65 </div> 66 </div> 67 68 <div class="row"> 69 <div class="col-5 col-sm-3"> 70 <p>2_メニュー名称</p> 71 </div> 72 <div class="col-7 col-sm-9"> 73 <p>{{ item.get_sample_1_display | default_if_none:"未入力" }}</p> 74 </div> 75 </div> 76 77 <div class="row"> 78 <div class="col-5 col-sm-3"> 79 <p>3_都道府県</p> 80 </div> 81 <div class="col-7 col-sm-9"> 82 <p>{{ item.name2 | default_if_none:"未入力" }}</p> 83 </div> 84 </div> 85 86 <div class="row"> 87 <div class="col-5 col-sm-3"> 88 <p>4_市区町村</p> 89 </div> 90 <div class="col-7 col-sm-9"> 91 <p>{{ item.name3 | default_if_none:"未入力" }}</p> 92 </div> 93 </div> 94 95 <div class="row"> 96 <div class="col-5 col-sm-3"> 97 <p>5_スープ味</p> 98 </div> 99 <div class="col-7 col-sm-9"> 100 <p>{{ item.get_sample_1 | default_if_none:"未入力" }}</p> 101 </div> 102 </div> 103 104 <div class="row"> 105 <div class="col-12"> 106 <div class="float-right mt-1 mb-3"> 107 <a class="btn btn-outline-dark" href="{% url 'create' %}">新規</a> 108 <a class="btn btn-outline-dark" data-toggle="modal" data-target="#myModal" href="#">検索</a> 109 </div> 110 </div> 111 </div> 112 </div> 113{% endblock %} 114</form> 115

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

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

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

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

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

guest

回答1

0

自己解決

モデルデータの方を再度新規更新する事で、Choiceの要素の値を取得することができました。

投稿2020/12/22 22:41

fdd

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問