Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 孟加拉语客观场解析_Python_Mongoalchemy - Fatal编程技术网

Python 孟加拉语客观场解析

Python 孟加拉语客观场解析,python,mongoalchemy,Python,Mongoalchemy,如果我有一个包含另一个模型的ObjectdField的模型,我通常(django)使用属性来创建getter,并且引用在使用中是透明的。像这样: class Image(db.Document): name_full = db.StringField(required=True) name_thumb = db.StringField(required=False) source = db.StringField(required=False) class P

如果我有一个包含另一个模型的ObjectdField的模型,我通常(django)使用
属性来创建getter,并且引用在使用中是透明的。像这样:

class Image(db.Document):
    name_full  = db.StringField(required=True)
    name_thumb = db.StringField(required=False)
    source     = db.StringField(required=False)

class Product(db.Document):
    name        = db.StringField()
    description = db.StringField(required=False)
    image_id    = db.ObjectIdField(required=False)

    def _get_image(self):
        try:
            return db.query(Image).filter(mongo_id=self.image_id)[0]
        except IndexError:
            return None
    image = property(_get_image)
但是,在实践中,当我尝试从模板访问它时,会出现以下错误:

<img src="{{ url_for('static', filename='images/products/'+product.image.name_thumb) }}">

UndefinedError: 'app.models.Product object' has no attribute 'image'

UndefinedError:“app.models.Product对象”没有属性“image”

我这样做对吗?

在这里回答我自己的问题。似乎我的错误在于函数本身,而不是属性的声明。一旦我使用了
会话
而不是
db
它就开始工作了。我还将属性声明缩短为只使用
@property

from mongoalchemy.session import Session
session = Session.connect('flask-test')

....

    @property
    def image(self):
        try:
            return session.query(Image).filter({"mongo_id":self.image_id})[0]
        except IndexError:
            return None

我怀疑我检索图像的查询也不是最好的。。。