widget_tweaks Django公式サイトを見たが、textformやtextarea、select formなどはわかるが、radioボタンの使い方がイマイチよくわからない。
django-widget-tweaks 1.4.8
やりたい事としては、銀行口座編集画面で、A.銀行口座(value=1)or郵便貯金口座(value=2)、B.普通預金(value=1)or当座預金(value=2)の登録情報を編集できるようにしたい。
なお、フロント側では、Javascriptで銀行口座の場合は銀行口座入力のみ、郵便貯金口座の場合は郵便貯金口座入力のフォームのみ入力できるようにformのdisableで制御している。
結局色々調べたが不明のため、views.py側で口座タイプ(bank_type)の値を取得し、ビュー側でif endifで制御する事にした。
{% if bank_type == 1 %}checked{% endif %}
views.py
def bank_edit(request): data = Bank.objects.get(id=1) params = { 'form': BankForm(instance=data), 'bank_type': data.bank_type, 'account_type': data.account_type, } return render(request, 'sales/bank_edit.html', params)
template
<div class="row col-md-12"> <div class="form-check col-md-2"> <input class="form-check-input" type="radio" name="bank_type" id="bank" value="1" {% if bank_type == 1 %}checked{% endif %} onClick="flg0(this.checked);"> <label class="form-check-label" for="bank">銀行口座</label> </div> <div class="form-check col-md-2"> <input class="form-check-input" type="radio" name="bank_type" id="jpbank" value="2" {% if bank_type == 2 %}checked{% endif %} onClick="flg1(this.checked);"> <label class="form-check-label" for="jpbank">郵便貯金口座</label> </div> </div>
formの初期値でdisabled=”disabled”を付けるかどうかも同様にif endifで制御した。
{% if bank_type == 1 %} {% render_field form.bank_name class="form-control" id="bank_name" placeholder="銀行名を入力してください" %} {% else %} {% render_field form.bank_name class="form-control" id="bank_name" placeholder="銀行名を入力してください" disabled="disabled" %} {% endif %}
想定通りの動きになっているが、何か気持ち悪いので、widget_tweaksでradioの使い方があれば教えて欲しい。
### PDFで表示
上記を請求書に実装する
if bank.bank_type == 1: bank_name = bank.bank_name + ' ' + bank.bank_branch if bank.account_type == 1: account = '普通預金 ' + bank.account_number else: account = '当座預金 ' + bank.account_number holder = '法人口座名義 ' + bank.account_holder elif bank.bank_type == 2: bank_name = '郵貯銀行' account = '記号 ' + bank.jp_number + ' 番号' + bank.jp_holder holder = '法人口座名義 ' + bank.account_holder else: bank_name = '別途ご連絡' account = '' holder = '' delivery_date = data.delivery_date.strftime("%Y年%m月%d日") + '納品予定' if data.delivery_date != None else '' # 振込先 pdf_canvas.drawString(60, 155, 'お手数でございますが、お支払いは下記銀行口座へ振込くださいますようお願い申し上げます。') pdf_canvas.drawString(60, 135, '振込先: ' + bank_name) pdf_canvas.drawString(60, 125, account) pdf_canvas.drawString(60, 115, holder) pdf_canvas.drawString(60, 105, '恐れ入りますが、振込手数料は貴社にてご負担ください。') pdf_canvas.drawString(60, 85, delivery_date)
Let’s Gooooooo