循环引用的Python问题:

循环引用的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 #

我得到:

请帮帮我,谢谢

我的代码:

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
    #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)