django: сохранить одно поле формы за раз - PullRequest
0 голосов
/ 15 мая 2019

Мое приложение django подключается к базе данных сервера sql.В моем шаблоне у меня есть редактируемый набор данных / форма.Всякий раз, когда пользователь редактирует поле и нажимает клавишу ввода, я хочу сохранить только отредактированное поле.Насколько я знаю, AJAX - единственный подход для этого, особенно если вы хотите, чтобы значение отредактированного поля было единственным, переданным на сервер.Давайте пока отложим этот случай и примем передачу всех данных набора форм сразу.Кроме того, набор форм основан на представлении SQL Server, которое включает в себя вычисленные значения.Следовательно, выполнение formset.save () вызовет ошибку.Вместо этого я должен использовать базовую таблицу, чтобы сохранить измененное значение.Что было бы лучше, чтобы идентифицировать измененное поле и сохранить только это?

Скажем, базовая таблица - costperdiem, которая соответствует модели в моем приложении django, а 'cost' - это имя редактируемого поля I.хочу сохранить, тогда мой подход заключается в следующем:

  1. проверить, является ли корректным набор форм
  2. перебрать формы набора форм, используя change_data для поиска измененного поля
  3. используя экземпляр модели для фильтрации по измененной записи
  4. , передайте измененное значение в модель
  5. , сохраните модель

, которая выглядит следующим образом в коде:

formset = FormSet_CostsPerDiem(request.POST)
    if formset.is_valid():
    for f in formset.forms:
        if 'costs' in f.changed_data:
            val2save=f.cleaned_data['costs']
            id=f.cleaned_data['id_costsperdiem']
            rec2save=costsperdiem.objects.filter(pk=id)
            rec2save.costs=val2save
            rec2save.save()

Как лучше всего делать что-то подобное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...