2017-03-06 2 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。フィールドが 'title'フィールドのようなすべてのオブジェクトに存在する場合、クエリは正常に動作します。

答えて

0

これはまだ対処されていないmongoengineの未解決の問題です。その周りの1つの方法は、matchを使用することです。たとえば、次のようなトリックがあります。

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