django-crispy-forms django . django.forms.MultiWidget.
django-crispy-forms MultiWidget .
: django.forms.MultiWidget.format_output(rendered_widgets)
from djmoney.forms.widgets import MoneyWidget
class CustomMoneyWidget(MoneyWidget):
def format_output(self, rendered_widgets):
return ('<div class="row">'
'<div class="col-xs-6 col-sm-10">%s</div>'
'<div class="col-xs-6 col-sm-2">%s</div>'
'</div>') % tuple(rendered_widgets)
class BookingForm(forms.ModelForm):
...
def __init__(self, *args, **kwargs):
super(BookingForm, self).__init__(*args, **kwargs)
amount, currency = self.fields['amount'].fields
self.fields['amount'].widget = CustomMoneyWidget(
amount_widget=amount.widget, currency_widget=currency.widget)
...
Django 1.11 +:
- change new template api. :
class CustomMoneyWidget(MoneyWidget):
template_name = 'widgets/money.html'
money.html
<div class="row">
<div class="col-xs-6 col-sm-10">
{% with widget=widget.subwidgets.0 %}
{% include widget.template_name %}
{% endwith %}
</div>
<div class="col-xs-6 col-sm-2">
{% with widget=widget.subwidgets.1 %}
{% include widget.template_name %}
{% endwith %}
</div>
</div>