2010-10-31 1 views
1

я получаю:проблема 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) 
+0

Dupe: http://stackoverflow.com/questions/4016047/recursive-problem – adw

ответ

2

Вы пытаетесь импортировать из image_blob.py перед обработкой image.py. В момент, когда происходит from app.models.item import Item, class Image еще не определен и, следовательно, еще не может быть импортирован (определение класса должно быть обработано до фактического определения символа).

Существует простое решение этой проблемы: Не указывайте image на ImageBlob. Модели AppEngine автоматически определяют обратную ссылку для вас, поэтому, когда вы добавляете ImageBlob в Image, она автоматически определит свойство на ImageBlob, которое ссылается на набор Image, который ссылается на него (что в вашем текущем использовать случай, должен быть размером 1).

+0

Обратная ссылка - это просто запрос к свойству ссылки для себя. Я согласен не создавать ссылки в обоих направлениях. – kevpie

+0

спасибо! которые решили проблему! –

 Смежные вопросы

  • Нет связанных вопросов^_^