Python 如何检索文档的嵌套列表

Python 如何检索文档的嵌套列表,python,mongodb,flask,wtforms,Python,Mongodb,Flask,Wtforms,我正在使用MongoDB和Flask。在我的模型中,我有以下内容: class Post(db.Document): types = db.StringField(max_length=255, required=True, default="Feature") geometry = db.ListField(db.EmbeddedDocumentField('Geometry')) properties = db.ListField(db.EmbeddedDocumen

我正在使用MongoDB和Flask。在我的模型中,我有以下内容:

class Post(db.Document):
    types = db.StringField(max_length=255, required=True, default="Feature")
    geometry = db.ListField(db.EmbeddedDocumentField('Geometry'))
    properties = db.ListField(db.EmbeddedDocumentField('Properties'))

class Geometry(db.EmbeddedDocument):
    types = db.StringField(default="Point",required=True)
    coordinates = db.ListField(db.EmbeddedDocumentField('Coordinates'))

class Coordinates(db.EmbeddedDocument):
    longitude = db.StringField(max_length=255)
    latitude = db.StringField(max_length=255)

class Properties(db.EmbeddedDocument):
    title = db.StringField(max_length=255, required=True)
    types = db.StringField(max_length=255, required=True)
    location_name = db.StringField(max_length=255, required=True)
    url = db.StringField(max_length=255, required=True)
    feed_url = db.StringField(max_length=255, required=True)
    content_url = db.StringField(max_length=255, required=True)
    date_added = db.StringField(max_length=255, required=True)
    date_crawled = db.StringField(max_length=255, required=True)
到目前为止,我正在使用:

Post.objects.get_or_404(title=title)
从类帖子中检索所有内容

我的问题是:有人知道如何检索listfield属性并获取url的值吗

我之所以需要它,是因为我正在尝试重新填充表单,以便当用户按下“编辑”时,它将显示用户先前在表单中添加的内容的详细信息

当我尝试时:

Properties.objects.get_or_404(url=url)

它给了我
AttributeError:type对象“Properties”没有属性“objects”

您使用的
EmbeddedDocument
所以它只是
Post
模型的路径,而
EmbeddedDocument
没有
对象属性,因为它只是
文档
作为
DictField
的路径

要查找
Post
where
properties.url==url
请使用下一个代码:

Post.objects.get_or_404(title=title, properties__url=url)
但您将获得
Post
实体,并且必须手动查找特定属性。例如:

class Post(db.Document):
    def get_property_by_url(self, url):
        for property in self.properties:
            if property.url == url:
                return property
        abort(404)