Запуск другого метода в представлении после сохранения формы с помощью CBVs - DJANGO
Я пытаюсь запустить другой метод после сохранения формы:
Метод inc_rec получает поле id, созданное в представлении на основе класса после сохранения
- После сохранения формы: Я хочу получить все записи в таблице Checklist .
- Итерация по каждой из строк и добавление записей в таблицу All_Inspection с обновлением идентификатора компании.
Я немного застрял - так как я пробовал использовать сигналы, и я пробовал переопределять, но где-то есть пробел.
Помощь приветствуется - заранее спасибо.
class ParishCreateView(LoginRequiredMixin, CreateView):
model = Company
fields = ['str_Company_Name', 'str_City','str_post_code']
#success_url = '/'
def form_valid(self, form):
print('form_valid')
form.instance.author = self.request.user
return super().form_valid(form)
def inc_rec(self):
Checklist = Checklist.objects.all()
id = self.request.id
for rec in Checklist:
new_rec=All_Inspection(str_status=rec.str_status, str_check=rec.str_check, str_comment='',company_id=id)
new_rec.save()
Я ожидаю, что после сохранения формы с новым созданным элементом в таблицу ALL_Inspection будут добавлены новые записи.
Если вы посмотрите на исходный код CreateView и пройдете несколько шагов, то обнаружите, что form_valid() определена в ModelFormMixin, где она сохраняет форму, а затем вызывает свой собственный родительский класс (FormMixin). Это возвращает HttpResponseRedirect с определенным success_url.
Вы можете отложить этот ответ до тех пор, пока вам не понадобится вернуться, как показано ниже:
def form_valid(self, form):
print("form valid")
form.instance.author = self.request.user
response = super().form_valid(form)
# All the logic you want to run after the form is saved
return response
Решено - я нашел метод, который перехватывает значение состояния для предварительного сохранения parish = form.save(commit=False). Затем я могу перехватить созданный идентификатор и обрабатывать его дальше.