Проблема: у меня есть база данных с 3 внешними ключами, каждый день я должен собирать пользовательский ввод со следующими правилами;
если в базе данных уже есть данные на сегодняшнюю дату, извлеките и отобразите данные. данные приведут к нескольким строкам, но каждая строка будет уникально запрашиваться на основе 3 внешних ключей (продукт, ветвь, версия_слияния) и дата_создания (auto_add=True)
если запрос ничего не вернул, создайте объект с экземпляром класса и отобразите пустые строки
если пользователь нажмет одну кнопку отправки, данные должны быть обновлены в базе данных в соответствии со следующими правилами;
- For each row submitted, validate if there is already an existing row present in database, if there is a row, update the row, else create a new row
Я попытался создать несколько экземпляров формы в цикле for для каждого продукта и отправить словарь на страницу шаблона, и он отображает строки без каких-либо проблем.
Когда я нажимаю «Отправить», сохраняются только данные последней строки, поскольку request.POST возвращает следующий вывод;
QueryDict: {u'build_date': [u'2013-10-11', u'2013-10-11', u'2013-10-11', u'2013-10-11', u'2013-10-11', u'2013-10-11', u'2013-10-11', u'
2013-10-11'], u'cln': [u'5555', u'2222', u'2222', u'2222', u'2222', u'2222', u'2222', u'090909'], u'logs': [u'no logs', u'no logs', u'no logs', u'no logs', u'no logs', u'n
o logs', u'no logs', u'no logs'], u'rpmt_status': [u'R', u'R', u'R', u'R', u'R', u'R', u'R', u'R'], u'rpmt_result': [u'F', u'F', u'F', u'F', u'F', u'F', u'F', u'F'], u'com
ments': [u'hghjg', u'hghjg', u'hghjg', u'hghjg', u'hghjg', u'hghjg', u'hghjg', u'hghjg'], u'cbs_other_bugs': [u'666', u'666', u'666', u'666', u'666', u'666', u'666', u'666
'], u'build_num': [u'12345', u'4444', u'8888', u'8888', u'8888', u'8888', u'8888', u'080808'], u'cbs_merge_blocker': [u'76767', u'76767', u'76767', u'76767', u'76767', u'7
6767', u'76767', u'76767'], u'csrfmiddlewaretoken': [u'8sNCLiUu23tvqLe1QHdJp1c5sQJmhevw'], u'cbs_waived': [u'89898', u'89898', u'89898', u'89898', u'89898', u'89898', u'89
898', u'89898']}
если у меня есть отдельная кнопка отправки для каждой строки, я получаю запрос ниже.POST
QueryDict: {u'build_date': [u'2013-10-11'], u'cln': [u'23423'], u'logs': [u'no logs'], u'rpmt_status': [u'R'], u'rpmt_result': [u'F'], u'comments': [u'hghjg'], u'cbs_other_bugs': [u'666'], u'build_num': [u'12345'], u'cbs_merge_blocker': [u'76767'], u'csrfmiddlewaretoken': [u'8sNCLiUu23tvqLe1QHdJp1c5sQJmhevw'], u'cbs_waived': [u'89898']}
Но я хочу сохранить всю базу данных с помощью одной кнопки отправки. Подскажите, пожалуйста, где я ошибаюсь? или есть лучший способ справиться с этой ситуацией, кроме использования ModelForm?