2010-09-23 3 views
1

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

Мне любопытно, какой wpuld был бы умным способом сделать это, чтобы удалить и сохранить все входные данные или сделать сравнение для каждой информации и сохранить отредактированные/новые поля & объектов.

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

ответ

11

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

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

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

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

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

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

Если вы хотите добавить похожие модели, воспользуйтесь, пожалуйста, InlineFormset (http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-form) - его очень легко обработать. В противном случае вы должны добавить поля к моделям '_meta, как описано здесь: How dynamic add custom field to model.

+0

спасибо большое за указание на предметы первой необходимости! – Hellnar

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