2017-03-06 6 views
0

나는 다음과 같은 스키마가있는 경우 :방법에 포함 된 문서 목록을 통해 조회 할 수 allow_inheritance

class Post(EmbeddedDocument): 
    title = StringField(max_length=120, required=True) 
    meta = {'allow_inheritance': True} 

class TextPost(Post): 
    content = StringField() 

class MoviePost(Post): 
    author = ReferenceField(Authors) 

class Record(Document): 
    posts = ListField(EmbeddedDocumentField(Post)) 

을 그리고 난 다음 쿼리 수행 : 나는 다음과 같은 오류가

author = Author.objects.get_or_404(id = id) 
records = Record.objects(posts__author = author) 
records.count() 

:

AttributeError: 'author' object has no attribute 'get' 

특정 개체가 '작성자'와 관련이 있거나없는 경우에만 allow_inheritance가 발생하는 것으로 보입니다. ld. 필드가 '제목'필드와 같은 모든 개체에 있으면 쿼리가 올바르게 작동합니다.

답변

0

아직 해결되지 않은 mongoengine의 공개 된 문제인 것 같습니다. 한 가지 방법은 match을 사용하는 것입니다. 예를 들어, 다음은 트릭을 수행합니다.

records = Record.objects(posts__match = { 'author': author })