Используя MongoAlchemy, возможно ли иметь DocumentField, который может быть одного из двух типов? Например:MongoAlchemy: Один из двух разных документов DocumentField
class A(Document):
foo = StringField()
class B(Document):
bar = StringField()
class C(Document):
child = DocumentField(A or B)
Я думал несколько вариантов, которые могли бы работать:
- Дайте
A
иB
общий родитель, а затем сделатьchild = DocumentField(CommonParent)
. - Напишите пользовательский
Field
, который переопределяетDocumentField
, но изменяет валидатор для поиска по списку типов, а не по одному. - Просто используйте
AnythingField
. Своего рода поражение.
Но интересно, было ли это уже сделано?
Спасибо за это. Пользовательское поле - это маршрут, над которым я работал. https://gist.github.com/jmgirven/59a363f9aa8392abca80fbe6956c174b. Я думаю, что wrap/unwrap работает, но из кода DocumentField я думаю, что мне нужно реализовать «dirty_ops» и «subfields» среди других вещей. Любые указатели? –
Только об этом узнали сегодня, извините. Итак, если я правильно помню, грязные операторы не работают для поддокументов. Но это должно быть хорошо, если вы не пытаетесь обновлять только измененные поля (которые я бы не рекомендовал) –