django - 如何以编程方式将条件字段添加到 wagtail 页面类型?
问题描述
我正在尝试向 wagtail 页面类型模型添加条件字段,条件字段可能如下图所示。有两个字段,Question和Answer。答案字段值应根据问题字段的选择显示
如果我们从问题中选择丰田,那么凯美瑞和陆地巡洋舰应该显示在答案下拉列表中,如果我们选择本田,那么思域和雅阁应该显示在答案中。
在 blocks.py 中,我有两个类分别负责Questions和Answers字段
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
现在,无论问题选择如何,我都会获得所有答案选项
解决方案
推荐阅读
- .net - powershell检查Assembly命令是否成功运行
- json - 在 C++Builder 中解析嵌套的 JSON 文件
- c++ - 为什么这不会创建一个悬空引用?
- javascript - 函数中的新对象总是在打字稿中返回相同的对象
- sqlite - Tinder 如何处理来自服务器的大量响应和请求?
- authentication - 在刷新页面之前,Blazor Web Assembly (wasm) 不会使客户端 cookie 过期
- c - RK 积分器中的长双精度误差饱和
- javascript - 如何从多个嵌套值创建项目数组?
- python - 子类方法会自动继承父类抽象方法的装饰器吗?
- java - 将 SqsListener 配置为长池化