首页 > 解决方案 > 如何以编程方式将条件字段添加到 wagtail 页面类型?

问题描述

我正在尝试向 wagtail 页面类型模型添加条件字段,条件字段可能如下图所示。有两个字段,QuestionAnswer答案字段值应根据问题字段的选择显示

在此处输入图像描述

如果我们从问题中选择丰田,那么凯美瑞陆地巡洋舰应该显示在答案下拉列表中,如果我们选择本田,那么思域雅阁应该显示在答案中。

在 blocks.py 中,我有两个类分别负责QuestionsAnswers字段

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

现在,无论问题选择如何,我都会获得所有答案选项

标签: djangowagtail

解决方案


推荐阅读