Как программно добавить условные поля к типу страницы трясогузки? - PullRequest
3 голосов
/ 05 ноября 2019

Я пытаюсь добавить условное поле в модель типа страницы трясогузки, условные поля могут выглядеть так, как показано на рисунке ниже. Есть два поля: Вопрос и Ответ . Значения поля Ответ должны отображаться относительно выбора поля Вопрос

enter image description here

Еслимы выбираем Toyota из Вопроса, затем Camry и Land Cruiser должны отображаться в раскрывающемся списке Ответ, если мы выбираем Honda , а затем Civic и Accord должны отображаться в Ответе.

В файле blocks.py у меня есть два класса, которые отвечают за Вопросы и Ответы поля соответственно

class ConditionsQuestionBlock(blocks.ChooserBlock):
  widget = Select
  class Meta:
    icon = "question"

  @cached_property
  def target_model(self):
    return Question

  @cached_property
  def field(self):
    return forms.ModelChoiceField(
        queryset=Question.objects.all(),
        widget=self.widget,
        required=self._required,
    )

  def value_for_form(self, value):
    if isinstance(value, User):
        return value.pk
    else:
        print("selected q:",value)
        selectedqval=value
        print("selected qvalue:",selectedqval)
        return value

class ConditionsAnswerBlock(blocks.ChooserBlock):
  widget = Select
  class Meta:
    icon = "question"

  @cached_property
  def target_model(self):
    return Choice

  @cached_property
  def field(self):
    choice=Choice.objects.all()
    return forms.ModelChoiceField(
        queryset=choice,
        widget=self.widget,
        required=self._required,
    )

  def value_for_form(self, value):
    if isinstance(value, User):
        return value.pk
    else:
        return value

Теперь независимо от выбора Вопрос я получаю все варианты Ответ

...