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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1025閲覧

DjangoのModelFormで生成されたHTMLタグのオプションにManyToManyFieldの値を追加したい

am120sec

総合スコア14

Django

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/04/26 12:10

htmlタグのオプションはIDでもclassでもnameでも良いのですが、複数追加できるようにしたいです。
どの様な方法があるでしょうか?

生成したいHTMLイメージ

HTML

1<form> 2 <div> 3 <label>ハンバーガー</label> 4 <select> 5 <option class="cheese putty tomato">チーズバーガー</option> 6 <option class="cheese fish mayo">フィッシュバーガー</option> 7 <option class="cheese chicken">チキンバーガー</option> 8 </select> 9 </div> 10</form>

modelです

python

1#models.py 2 3class Topping(models.Model): 4 name = models.CharField(max_length=20,unique=True) 5 6 def __str__(self): 7 return self.name 8 9 10class Hamburger(models.Model): 11 name = models.CharField(max_length=20,unique=True) 12 topping = models.ManyToManyField(Topping) 13 14 def __str__(self): 15 return self.name 16 ) 17

とりあえずこのようにすると、全てのラジオボックスのオプションがclass = toppingとなります

python

1#forms.py 2hamburger = forms.ModelChoiceField( 3 label='ハンバーガー', 4 queryset=Hamburger.objects.all(), 5 widget = forms.RadioSelect(attrs={'class':'topping'}), 6 empty_label=None, 7 )

上記の例で実際に生成されるHTML

HTML

1<form> 2 <div> 3 <label>ハンバーガー</label> 4 <select> 5 <option class="topping">チーズバーガー</option> 6 <option class="topping">フィレオフィッシュバーガー</option> 7 <option class="topping">チキンバーガー</option> 8 </select> 9 </div> 10</form>

宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

RadioSelectを継承したクラスを作って
renderをオーバーライドするか
Rendererを書き換えですね。

stackoverflow:How to build a custom form widget?

一応、django カスタム widgetとかでググると少ないですが日本語情報も出てきます。

投稿2018/04/26 14:44

編集2018/04/26 14:45
kokardy

総合スコア781

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問