Проблема 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 который ссылается на множество Images, которые ссылаются на него (который, в вашем текущем случае использования, должен иметь размер 1).

Другие вопросы по тегам