0

使用MongoAlchemy,是否有可能拥有可以是两种类型之一的 DocumentField?例如:

class A(Document):
    foo = StringField()

class B(Document):
    bar = StringField()

class C(Document):
    child = DocumentField(A or B)

我想到了一些可能可行的选择:

  • AB一个共同的父母,然后做child = DocumentField(CommonParent)
  • 编写一个Field覆盖的自定义DocumentField,但将验证器更改为搜索类型列表,而不是一个。
  • 只需使用AnythingField. 有点失败了。

但想知道它是否已经完成?

4

1 回答 1

0

有一个我从未合并过的分支(尽管我确实使用了一段时间),在那里我实现了多态类型:

https://github.com/jeffjenkins/MongoAlchemy/tree/poly-queries

如果您愿意做一些错误修复,这是一个不错的选择。

否则,最简单的做法是实现自定义字段。我怀疑创建一个将DocumentFields 列表作为输入并且可以区分的常规字段可能比混淆 DocumentField 更容易(这有点像多态分支所做的,但更复杂)。

于 2016-10-28T14:47:50.033 回答