Я несколько часов работал над этим, пытаясь найти какой-нибудь способ использовать пользовательский рендерер в RadioSelect, но нет способа передать номер выбора. Вместо этого я пошел на клуджий, но простой подход. Добавил функцию __init__
к моей форме:
def __init__(self, *args, **kwargs):
super(FormName, self).__init__(*args, **kwargs)
self.radiofield_choice = re.findall(r'<li>(.+?)</li>',
unicode(self['radiofield_name']))
При создании виджета используется рендеринг RadioSelect по умолчанию, а затем анализируется отдельный выбор HTML. Вы могли бы даже объединить это с определенными вариантами, чтобы создать словарь вместо списка.
В моем шаблоне я использовал {{ form.radiofield_choice.0|safe }}
для рендеринга только первого элемента. Увеличьте ноль, чтобы получить другие предметы.
Если по какой-то причине необходимы только поля ввода без меток, используйте r'(<input.+/>)'
.