Вывод радио селектов Django в два столбца

категория: Django
Вывод радио выбора или чекбоксов в django может желать лучшего, поэтому перепишем метод render у виджета RadioSelect. Будет симпатично, чтобы выбор был в два столбика и без всяких списков. Виджет свой писать тут особо нет смысла, так как нужно просто подправить вывод элементов. Создадим наше поле выбора в форме:
report_reasons = forms.CharField(widget=forms.RadioSelect(
    renderer=TwoColsRadioRenderer, choices=REPORT_REASON_CHOICES))
Теперь напишем наш renderer:
class TwoColsRadioRenderer(forms.RadioSelect.renderer):
    """ this overrides widget method to put radio buttons
        into two columns
    """
    def render(self):
        return mark_safe(u''.join([u'<div class="width50">%s</div>' % 
            item for item in self]))
Класс width50 - это width: 50%, но можно все что угодно делать и во что угодно обертывать, не обязательно в div. Верстальщики, наверное, посадили бы меня на кол за то что я тут семантику html дивами нарушаю, но увы - я не уловимый))


blog comments powered by Disqus