循环引用的Python问题:
我得到: 请帮帮我,谢谢 我的代码: image.py:循环引用的Python问题:,python,circular-reference,Python,Circular Reference,我得到: 请帮帮我,谢谢 我的代码: image.py: ImportError: cannot import name Image (from image_blob.py) 图像块: from google.appengine.ext import db from app.models.item import Item class Image(Item): # imports from app.models.image_blob import ImageBlob #
ImportError: cannot import name Image (from image_blob.py)
图像块:
from google.appengine.ext import db
from app.models.item import Item
class Image(Item):
# imports
from app.models.image_blob import ImageBlob
#from app.models.user import User
#from list_user import ListUser # is needed in order to have the references
# references
#uploaded_by_user = db.ReferenceProperty(User, required = True)
large_image = db.ReferenceProperty(ImageBlob, required = True)
small_image = db.ReferenceProperty(ImageBlob, required = True)
# image info
title = db.StringProperty(required = True)
description = db.StringProperty(required = False)
# metadata
# relations
在处理整个
image.py
之前,您正试图从image\u blob.py
导入。在app.models.item import item中出现时,类图像
尚未定义,因此无法导入(必须在实际定义符号之前处理整个类定义)
有一个简单的解决方案:不要在ImageBlob
上定义image
属性。AppEngine的模型会自动为您定义向后引用,因此当您将ImageBlob
添加到Image
时,它会自动在ImageBlob
上定义一个属性,该属性会引用引用它的Image
集合(在当前用例中,该集合的大小应为1).Dupe:backwards引用只是针对自身的引用属性的查询。我同意不在两个方向上创建参照。
from google.appengine.ext import db
class ImageBlob(db.Model):
from app.models.image import Image
data = db.BlobProperty(required = True)
image = db.ReferenceProperty(Image, required = True)