Django: форма, обновляющая X моделей - PullRequest
1 голос
/ 23 сентября 2010

У меня есть страница, где он отображает отфильтрованный список экземпляров модели и позволяет пользователям обновлять некоторые его поля или добавлять новые поля в виде формы.

Мне интересно, какой бы умный способ это сделать?, чтобы удалить и восстановить все входные данные или сделать сравнение для каждого из данных и сохранить отредактированные / новые поля и сущности.

Я хотел бы отметить, что я использую postgres для сохранения этих значений и отображаю около 20 записей дляэта форма.

1 Ответ

11 голосов
/ 23 сентября 2010

Объект QuerySet имеет метод update () - он используется в ie.Панель администратора для массового обновления нескольких выбранных объектов из списков изменений.Вот ссылка на метод в официальной документации django .

Как его использовать:

Просто создайте набор запросов с моделями, которые вы хотите обновить (при условии, что MyModel имеет поле с именем'my_field'):

qs = MyModel.objects.all()
qs.update(my_field=value) 

Вот и все - помните, что метод update () не будет отправлять какие-либо сигналы, такие как метод save () - он просто будет запускать запрос непосредственно в базу данных.

Что касается «добавления полей через форму» - я не знаю, правильно ли я понял?Вы хотите добавить дополнительные связанные модели или динамически добавить поля в таблицу моделей в базе данных?

Если вы хотите добавить связанные модели, используйте InlineFormset (http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-form) - это довольно просто обрабатывать. В противном случае вынеобходимо добавить поля в _meta моделей, как описано здесь: Как динамически добавить настраиваемое поле в модель .

...