1

我正在使用 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)

从课堂帖子中检索所有内容。

我的问题是:有谁知道如何检索列表字段属性并获取 url 的值?

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

当我尝试:

Properties.objects.get_or_404(url=url)

它给了我AttributeError: type object 'Properties' has no attribute 'objects'

4

1 回答 1

0

您使用EmbeddedDocumentso 它只是Post模型的路径并且EmbeddedDocument没有object属性,因为它只是Documentas的路径DictField

要查找Post使用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)
于 2013-06-29T20:59:59.423 回答