У меня есть форма (отредактированная для краткости) следующим образом:
class InteractionForm(forms.Form):
def __init__(self, *args, **kwargs):
# Each object within this queryset is a model object of type InteractionChoice
choices_qs = interaction.interactionchoice_set.all()
self.fields['choices'] = forms.ModelChoiceField(
widget=forms.RadioSelect(),
queryset=choices_qs,
Модель InteractionChoice
выглядит следующим образом:
class InteractionChoice(models.Model):
interaction = models.ForeignKey(Interaction)
name = models.CharField(max_length=255)
is_answer = models.BooleanField(default=False)
Экземпляр InteractionForm
передается из представления в шаблон и обрабатывается с помощью:
{{ form.choices }}
Мой вопрос заключается в том, существует ли способ перебора каждого варианта в моем шаблоне и доступ к одному из его свойств, в частности, к свойству is_answer
, определенному в InteractionChoice
. Цель состоит в том, чтобы настроить отображение выбора, если это действительно ответ. Более конкретно, если is_answer
- «Истина», я бы мог изменить атрибут class
на <label>
для этого выбора.
Возможно, я подхожу к этой проблеме с неправильного направления. Если у кого-то есть указания на альтернативные идеи, я буду рад их услышать.
Заранее спасибо.
Обновление 1:
Думая об этом больше после ответа @rczajka, я не верю, что смогу достичь того, что я надеюсь сделать в коде шаблона. Вместо этого, если цель состоит в том, чтобы изменить атрибут класса тега, возможно, мне следует искать подкласс и переопределять определенные методы в forms.widgets.RadioInput
, forms.widgets.RadioFieldRenderer
и forms.widgets.RadioSelect
. Я буду копаться в этом больше.