Как использовать группы сущностей и предков с DjangoForms - PullRequest
0 голосов
/ 22 декабря 2011

Я хотел бы переписать пример из статьи GAE djangoforms , чтобы он был наиболее актуальным после отправки формы (например, при обновлении или добавлении новой записи) в Google App Engine с использованием High Replication Datastore.

Основной повторяющийся запрос в этой статье:

query = db.GqlQuery("SELECT * FROM Item ORDER BY name")

который мы переведем на:

query = Item.all().order('name')  // datastore request

В этом запросе я хотел бы получить последние обновленные данные из хранилища данных с высокой репликацией после отправки формы (только в этих случаях я предполагаю, что после отправки я могу перенаправить на определенные URL-адреса, которые просто используют запрос для получения последних данных и во всех остальных случаях я бы этого не делал).

проверка формы, хранящей результаты, происходит следующим образом:

data = ItemForm(data=self.request.POST)
if data.is_valid():
    # Save the data, and redirect to the view page
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  // datastore request

и получение последней записи из хранилища данных для заполнения формы (для редактирования) происходит следующим образом:

id = int(self.request.get('id'))
item = Item.get(db.Key.from_path('Item', id))  // datastore request
data = ItemForm(data=self.request.POST, instance=item)

Итак, как мне добавить группы сущностей / ключи предков в эти запросы к хранилищу данных, чтобы отразить последние данные после отправки формы. Обратите внимание, я не хочу, чтобы во всех запросах были самые последние данные при заполнении формы (для редактирования) и после отправки формы.

Кто может помочь мне с практическими примерами кода?

1 Ответ

0 голосов
/ 29 декабря 2011

Если он находится в том же блоке, у вас есть ссылка на текущий интервал.
Затем, как только вы put() это, вы можете получить его id по:

if data.is_valid():
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  
    id= entity.key().id() #this gives you inserted data id
...