如何从列表字段访问属性

时间:2013-06-30 10:06:57

标签: python mongodb flask mongoengine wtforms

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

非常感谢

1 个答案:

答案 0 :(得分:1)

Post.propertiesListField类型。因此,Post实例properties具有list类型。

首先,您必须获得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 tutorialuser guide