Проблема Python с циклической ссылкой:
Я получил:
ImportError: cannot import name Image (from image_blob.py)
пожалуйста, помогите мне спасибо:s
мой код:
image.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_blob:
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)
1 ответ
Вы пытаетесь импортировать из image_blob.py
до полного image.py
обрабатывается. В то время, когда from app.models.item import Item
происходит, class Image
еще не был определен и, следовательно, еще не может быть импортирован (все определение класса должно быть обработано до того, как символ будет фактически определен).
Это простое решение: не определять image
собственность на ImageBlob
, Модели AppEngine автоматически определяют обратную ссылку для вас, поэтому при добавлении ImageBlob
к Image
, он автоматически определит свойство на ImageBlob
который ссылается на множество Image
s, которые ссылаются на него (который, в вашем текущем случае использования, должен иметь размер 1).