如果我有以下架构:
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时,某些对象可能有也可能没有'author'字段。如果该字段存在于所有对象上,例如“标题”字段,则查询工作正常。
答案 0 :(得分:0)
似乎这仍然是mongoengine中尚未解决的问题。解决它的一种方法是使用match
。例如,以下是诀窍:
records = Record.objects(posts__match = { 'author': author })