2016-10-28 3 views
0

MongoAlchemy을 사용하면 두 가지 유형 중 하나 일 수있는 DocumentField를 사용할 수 있습니까? 예컨대 :MongoAlchemy : 두 가지 다른 DocumentField 중 하나

class A(Document): 
    foo = StringField() 

class B(Document): 
    bar = StringField() 

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

나는 일 수있는 몇 가지 옵션이 생각 :

  • 공통 부모 AB을 부여하고 child = DocumentField(CommonParent)을한다.
  • DocumentField을 무시하고 유효성 검사기를 변경하여 형식 목록 대신 검색기를 변경하는 사용자 지정 Field을 작성합니다.
  • 그냥 AnythingField을 사용하십시오. 종류는 요점을 격파한다.

하지만 이미 완료했는지 궁금하십니까?

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

당신의 버그 수정의 조금을 할 생각이 있다면 : 나는 다형성 유형을 구현 곳 (나는 잠시 동안 사용 했더라도)

답변

0

내가 합병 결코 지점이 있었다 꽤 좋은 옵션.

그렇지 않으면 가장 쉬운 방법은 맞춤 입력란을 구현하는 것입니다. 나는 입력으로 DocumentField의 목록을 취한 정규 필드를 만드는 것이 더 쉬울 것이라고 생각한다. 그리고 DocumentField (다형성 분지가하는 일종이지만 좀 더 복잡하게 일종이다.)과 혼동하는 것보다 구별 할 수있다.

+0

고마워요. 사용자 정의 필드는 내가 작업 한 경로입니다. https://gist.github.com/jmgirven/59a363f9aa8392abca80fbe6956c174b. 나는 랩/언랩이 작동한다고 생각하지만 DocumentField 코드에서 다른 것들 사이에서'dirty_ops'와'subfields'를 구현해야한다고 생각합니다. 어떤 포인터? –

+0

오늘은 죄송합니다. 그래서, 내가 올바르게 기억한다면 더러운 작업은 하위 문서에서는 작동하지 않습니다. 하지만 변경된 필드 만 업데이트하려고하지 않는 한 괜찮습니다. (권장하지는 않습니다) –