0

У меня есть объект, называемый Author. Ниже класс NDB:AttributeError на объекте объекта облачного хранилища google

class Author(ndb.Model): 
    name = ndb.StringProperty() 
    website = ndb.StringProperty() 
    bio = ndb.StringProperty() 
    profile_image_url = ndb.StringProperty() 
    slug = ndb.ComputedProperty(lambda self: make_slug(self.name)) 

Я создаю объект автора, как этого

author = Author(id=pk, **author_dict) 
author.put() 

Там нет ошибки при создании объекта автора в первый раз.

Я получение объекта автора, как этот

author = Author.get_by_id(pk) 

при попытке доступа к полю автора био~d я получаю AttributeError

author.bio = bio_text 

Ошибка возникает, когда доступ к полю на существующий автора объект. Ошибка не во всех полях.

Консоль показывает все столбцы. Биологический столбец присутствует в консоли хранилища данных для объекта-автора.

Я удалил все объекты автора и сделал новые записи. Тем не менее, я получаю AttributeError.

У меня есть несколько объектов в хранилище данных, но я получаю эту ошибку только для объекта Author.

заявление об ошибке:

File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", 
line 2990, in _set_attributes 
prop = getattr(cls, name) # Raises AttributeError for unknown properties. 
AttributeError: type object 'Author' has no attribute 'bio' 

ЗАКРЫТО:

Я имел класс с именем автора в другом модуле. Этот класс использовался NDB каким-то образом для создания объекта-автора и вызывал такое поведение.

+0

Просим вас предоставить [mcve]. Я не могу воспроизвести эту проблему с примером кода, который вы предоставили. – snakecharmerb

+0

Привет, я добавил дополнительную информацию. Я могу добавить окружающий код, но он не связан с ошибкой. –

+0

Вы можете получить эту ошибку, только если «автор» - это класс, а не экземпляр, и это класс, который не имеет атрибута «bio». Поэтому кажется, что вы переписываете 'author' где-то в своем коде. – snakecharmerb

ответ

0

У меня был класс под названием «Автор» в другом модуле. Этот класс использовался как структурированное свойство в другом классе сущности.

Как-то этот класс использовался NDB для создания объекта Author. Я переименовал этот класс, и ошибка исчезла.

Теперь я использую разные имена классов для всех объектов ndb и структурированных свойств.

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