0

如果我有以下架构:

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 中。如果所有对象上都存在该字段,例如“标题”字段,则查询工作正常。

4

1 回答 1

0

看来这仍然是 mongoengine 中尚未解决的一个未解决的问题。一种解决方法是使用match. 例如,以下方法可以解决问题:

records = Record.objects(posts__match = { 'author': author })
于 2018-02-19T23:16:37.927 回答