如何检索文档的嵌套列表

时间:2013-06-29 18:03:19

标签: 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.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 object 'Properties' has no attribute 'objects'

1 个答案:

答案 0 :(得分:0)

您使用了EmbeddedDocument,因此它只是Post模型的路径而EmbeddedDocument没有object属性,因为它只是Document的路径{{{ 1}}。

要查找DictField,其中Post使用下一个代码:

properties.url == url

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

Post