Как получить доступ к подмножеству kwargs.pop или другой способ установки различных форм в зависимости от типа вопроса?
Я создаю приложение для опроса, в котором есть вопросы с атрибутом type, где он может быть checkbox, textarea или radio. У него также есть модель опций (которая имеет вопрос в качестве внешнего ключа)
В моей форме ответа я хочу передавать различные типы формы в зависимости от типа вопроса. Пока что у меня есть: (со всеми вопросами и опциями, имеющими форму типа radio...
)class Question(models.Model):
survey = models.ForeignKey(Survey, on_delete=models.CASCADE)
prompt = models.CharField(max_length=128)
class Type(models.TextChoices):
YesOrNo = 'YesOrNo'
Text = 'Text'
MultipleChoice = 'MultipleChoice'
CheckBox = 'CheckBox'
type = models.CharField(max_length=15,
choices=Type.choices, default=None, blank=True, null=True)
class Option(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
text = models.CharField(max_length=128)
А в моих Формах у меня есть:
class QuestionForm(forms.ModelForm):
class Meta:
model = Question
fields = ["prompt", "type"]
class OptionForm(forms.ModelForm):
class Meta:
model = Option
fields = ["text"]
class AnswerForm(forms.Form):
def __init__(self, *args, **kwargs):
options = kwargs.pop("options")
choices = {(o.pk, o.text) for o in options}
super().__init__(*args, **kwargs)
option_field = forms.ChoiceField(
choices=choices, widget=forms.RadioSelect, required=True)
self.fields["option"] = option_field