1

我正在使用 mongodb 和烧瓶。我有以下模型:

class Post(db.Document):
    properties = db.ListField(db.EmbeddedDocumentField('Properties'))


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.properties我会返回一个列表字段。我想知道是否有人知道如何访问属性类中的 url 属性。最好我想获取 properties.url 相等的列表字段,例如“abc”

我已经尝试过Post.properties.url,我收到以下错误

AttributeError: 'ListField' object has no attribute 'url'

非常感谢

4

1 回答 1

1

Post.propertiesListField类型。例如Post有类型propertieslist

首先你必须得到Post实例(不是类):

post_1 = Post.objects.first()  # get first from database
post_2 = Post().save()  # create and save

使用Post实例,您可以按索引获取属性:

post = Post.objects.first()
print post.properties[0].url if post.properties else None

但更好地迭代属性:

post = Post.objects.first()
for property in post.properties:
    print property.url

另请参阅 mongoengine 教程用户指南

于 2013-06-30T10:30:21.167 回答