django - 过滤从 Wagtail 核心页面导入的多个模型的自定义字段
问题描述
我有两个Page
共享一个字段的自定义模型,例如:
class CustomPageModelOne(Page):
custom_field = models.IntegerField()
...
class CustomPageModelTwo(Page):
custom_field = models.IntegerField()
...
Page
理想情况下,我需要跨两种类型的自定义模型运行单个过滤器。Wagtail 文档说我可以使用一种exact_type
方法来指定从 core 继承的多个模型Page
,因此我正在尝试以下一些变体:
Page.objects.exact_type(CustomPageModelOne, CustomPageModelTwo).filter(custom_field=123)
但是,当我尝试过滤使用这两种模型的任何 QuerySet 时,我收到一个错误:
django.core.exceptions.FieldError:无法将关键字“custom_field”解析为字段。
如何跨共享一个字段的多个 Wagtail 自定义页面模型进行查询?
注意:我考虑过创建一个继承自 的抽象类Page
,但无法在需要的文件中导入该抽象模型。
抽象类示例:
class CustomFieldModel(Page):
custom_field = models.IntegerField()
class Meta:
abstract = True
class CustomPageModelOne(CustomFieldModel):
pass
class CustomPageModelTwo(CustomFieldModel):
pass
解决方案
正如您所做的那样Page.objects...
,您只能过滤Page 模型的字段和Page
要专门过滤您的字段,CustomPageModelOne
您必须使用CustomPageModel.objects...
该模型具有该字段的位置,并且您的两个自定义页面模型都是来自的子类
推荐阅读
- ios - build_iphone.sh:第 52 行:/Users/.../pocketsphinx-master/configure:没有这样的文件或目录
- intellij-idea - 当我更改 pom.xml 并使编辑糟糕的用户体验时,如何禁用 IntelliJ 触发构建?
- java - 为什么“ig”重复两次?
- oracle-apex - 如何使用 Web 源在 Oracle Apex 中执行 PL/SQL 时修复“ORA-06550”
- asp.net - 清除文本框时显示所有 Gridview 控件值
- ios - 呈现一个新的 ViewController 但维护视图堆栈
- ruby - 如何在 irb 中测试 parslet atom
- python-3.x - 根据节点pyspark的数量拆分我的数据框
- c# - 测试减法并在结果大于零时应用它
- python - 将 JSON 数据提取到关系表中