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 属性にアクセスする方法を誰かが知っているかどうか疑問に思っていました。できれば、「abc」のように properties.url が等しいリストフィールドを取得したい

試してみ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 に答える