2013-01-03 7 views
0

Я использую GAE, Datastore, Python 2.7 и создаю/обновляю записи в хранилище данных с использованием предков в первый раз. Здесь я пытаюсь посмотреть, есть ли записи/строки в файле Level_2_Headings datastore, а если нет, то создайте новый. Если он существует, обновите описание. Я получаю эту ошибку: хранилище данных для Level_2_Headings пуст, поэтому оно должно быть пустым, так что я могу добавить новую запись, но вместо этого получаю ошибку в запросе для объекта , где я использую атрибут предка - любые идеи о том, почему это было бы, когда я ожидаю вернуть только пустой объект, поскольку он не существует в хранилище данных? Помощь ценится, как обычно.Получение атрибутаError: type object 'Level_2_Headings' не имеет атрибута 'ancestor' (GAE datastore)

if q: 
    q2 = Level_2_Headings.ancestor(q.key()).filter("name2 =",heading2).get() 
    if q2: 
     q2.description2 = description2 
     q2.put()   
    else:   
     #new level 2 being added to ds 
     new_2 = Level_2_Headings(parent=q2, name2=name2, description2=description2, heading_type=heading_type) 
     new_2.put() 

     message="Added NEW category entry to level 2" 

ответ

1

Вы ссылаетесь на Level_2_Heading модели непосредственно, без вызова all() для извлечения записей. Level_2_Headings.all() возвращает объект, который имеет атрибут ancestor, поэтому попробуйте изменить свой первый q2 к:

q2 = Level_2_Headings.all().ancestor(q.key()).filter("name2 =",heading2).get() 
+0

Большое спасибо !!!!! – user1769203

+0

@ user1769203 Нет проблем, удачи всем! – RocketDonkey