Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2010 12:52:29

Kamber
От:
Зарегистрирован: 2010-05-05
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioSelect

Подскажите, как изменить форму вывода widgets = RadioSelect
Не устраивает <ul> и <li>
Есть сильное желание выводить в ячейки таблицы, а вот как сделать не знаю.



Офлайн

#2 Июль 6, 2010 15:09:44

tmt
От:
Зарегистрирован: 2010-03-26
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioSelect

Kamber
Подскажите, как изменить форму вывода widgets = RadioSelect
Не устраивает <ul> и <li>
Есть сильное желание выводить в ячейки таблицы, а вот как сделать не знаю.
У виджета RadioSelect в конструктор можно передать именованый параметр - renderer.
По дефолту ему присвоен RadioFieldRenderer, который виглядит так:
class RadioFieldRenderer(StrAndUnicode):
"""
An object used by RadioSelect to enable customization of radio widgets.
"""

def __init__(self, name, value, attrs, choices):
self.name, self.value, self.attrs = name, value, attrs
self.choices = choices

def __iter__(self):
for i, choice in enumerate(self.choices):
yield RadioInput(self.name, self.value, self.attrs.copy(), choice, i)

def __getitem__(self, idx):
choice = self.choices[idx] # Let the IndexError propogate
return RadioInput(self.name, self.value, self.attrs.copy(), choice, idx)

def __unicode__(self):
return self.render()

def render(self):
"""Outputs a <ul> for this set of radio fields."""
return mark_safe(u'<ul>\n%s\n</ul>' % u'\n'.join([u'<li>%s</li>'
% force_unicode(w) for w in self]))
Смотрим метод def render(self) и понимаем что в вашей ситуации нужно что то менять =)
Пишем (наследуем) новый RadioFieldRenderer где метод render меняем (переопределяем) под свои нужды.
Далее передаем в конструктор виджета наш клас.



Отредактировано (Июль 6, 2010 15:26:47)

Офлайн

#3 Июль 6, 2010 15:18:17

tmt
От:
Зарегистрирован: 2010-03-26
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

RadioSelect

Вдогонку. StrAndUnicode живет в django.utils.encoding
Не забудьте о

from django.utils.encoding import StrAndUnicode, force_unicode
Также
from django.utils.safestring import mark_safe



Отредактировано (Июль 6, 2010 15:29:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version