Схема ввода радио в форме django

Что такое "djangoy" подход к этой проблеме:

В моем классе форм у меня есть forms.ChoiceField, виджет которого - forms.RadioSelect виджет, один из вариантов выбора которого должен быть представлен с помощью встроенного текстового ввода (который также является полем в форме). Я использую настраиваемую проверку, чтобы игнорировать текстовое поле, когда его выбор радио не выбран. При рендеринге я хочу, чтобы он выглядел, как показано ниже:

<ul>
<li><label for="id_rad_0"><input type="radio" id="id_rad_0" value="none" name="rad" /> No Textbox</label></li>
<li><label for="id_rad_1"><input type="radio" id="id_rad_1" value="one" name="rad" /> One Textbox: <input type="text" name="bar" id="id_bar" /></label></li>
</ul>

Однако я не могу просто создать это в моем шаблоне, потому что варианты радио не отображаются. Я не вижу способа сделать это без тесной привязки моей формы к моему шаблону или, наоборот, размещения всей логики представления в классе формы. Как правильный способ решить эту проблему?

edit

Я понимаю, что приведенное выше может быть лишь неясной проблемой, но я не уверен, какую еще информацию я могу предоставить по порядку чтобы вдохновить кого-нибудь помочь мне в этом. Я гораздо лучше бэкэнд-программист, чем веб-дизайнер, и я работаю в этом проекте один, так что, может быть, это недостаток образования - это то, что я описал просто плохим дизайном? Должен ли я просто спроектировать это по-другому? Я действительно открыт для любых предложений, которые помогут мне преодолеть это.

редактировать 2

По запросу, текущий код сокращен для сохранения здравомыслия, имена изменены для защиты невиновных:

# forms.py
from myapp.models import RatherComplicatedModel
from django import forms

class RatherComplicatedForm(forms.ModelForm):
    #various and sundry code...
    RADIO_CHOICES = (
        ('none', "No Textbox"),
        ('one', "One Textbox: "),
    )
    # although I've abbreviated the model, 'rad' does not appear in the model;
    # it merely provides input to the un-provided clean function
    rad = forms.ChoiceField(widget=forms.RadioSelect(),choices=RADIO_CHOICES)

    class Meta:
        model = RatherComplicatedModel

-

# models.py
from django.db import models

class RatherComplicatedModel(models.Model):
    #some other stuff...
    bar = models.IntegerField(blank=True,null=True)
7
задан Nate 16 June 2011 в 23:52
поделиться