2009-09-17 7 views
2

У меня есть эта модель датастораGAE - Как редактировать я/обновить хранилище в питоне

class Project(db.Model) 
projectname = db.StringProperty() 
projecturl = db.StringProperty() 

class Task(db.Model) 
project = db.ReferenceProperty(Project) 
taskname= db.StringProperty() 
taskdesc = db.StringProperty() 

Как изменить значение TASKNAME? что у меня есть task1 и я хочу, чтобы изменить его TASK1-проект

ответ

1

Учитывая экземпляр t из Task (например, от некоторой get операции на db) вы можете выполнить изменения вы хотите, например, по t.taskname = t.taskname + '-project' (если вы хотите «добавить '-project' к тому, что было там раньше). В конце концов вам также, вероятно, понадобится .putt обратно в магазин, конечно (но если вы сделаете несколько изменений, вам не нужно его ставить !. назад после каждого изменения - только тогда, когда вы закончите его изменения -)

+0

Привет! Спасибо за Ваш ответ. Я использую этот код, но ничего не происходит. taskkey = self.request.get ("taskkey") TaskID = Task.get (taskkey) запроса = db.GqlQuery ("SELECT * FROM Задача WHERE __key__ =: TaskID", TaskID = TaskID) , если query.count()> 0: task = Task() task.taskname = "task1-project" task.put() – gene

+2

Ваш код неформатирован (отредактируйте свой ответ, чтобы показать красиво отформатированный код), но что вы очевидно, что это создание совершенно нового и несвязанного объекта задачи (конечно, с совершенно новым и не связанным с ним ключом) и его установкой - это, очевидно, никоим образом не изменит первоначальный, но ваше утверждение о том, что «ничего не происходит», (проверьте свою панель приборов !!!), теперь у вас есть еще один мандат y типа Task (точно так, как вы указали). Почему вы не изменяете свой оригинал, как я сказал, но вместо этого вы делаете совершенно новый?!?!? –

-1

Вероятно, самый простой способ заключается в использовании консоли администратора Локально это:

http://localhost:8080/_ah/admin 

и если у вас есть. Загрузите его, это приборная панель:

http://appengine.google.com/dashboard?&app_id=****** 

Here's ссылка:

2

упс извините, вот форматированный код:

taskkey = self.request.get ("taskkey")
TaskID = Task.get (taskkey)
запрос = дБ .GqlQuery ("SELECT * FROM задача WHERE ключ =: TaskID", TaskID = TaskID)

если query.count()> 0:
задача = Task()
task.taskname = «task1-проект "
task.put ()

, кстати, я получаю его сейчас. Я изменил задачу = Task() в task = query.get(), и она сработала.

Спасибо за помощь, кстати.