Набор форм Django — обновляет значение в Views.py перед сохранением

#python #django #formset

#python #django #набор форм

Вопрос:

Я пытаюсь установить значение для каждой формы в наборе форм в одно значение. Я не уверен, как это сделать … views.py функция ниже:

Нравится: formset.idcst_cnt = id

views.py

 def customer_contacts(request, id):
    ContactFormSet = modelformset_factory(AppContactCnt, can_delete=True, fields=(
        'name_cnt', 'phone_cnt', 'email_cnt', 'note_cnt', 'receives_emails_cnt'), max_num=3, extra=3)
    formset = ContactFormSet(queryset=AppContactCnt.objects.filter(idcst_cnt=id), prefix='contact')
    if request.method == 'GET':
        context = {'formset': formset}
        return render(request, 'customer_contacts.html', context=context)
    if request.method == 'POST':
        formset = ContactFormSet(request.POST, prefix='contact')
        if formset.is_valid():
            print("we're updating contacts for "   str(id))
            # formset.save()

        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
  

Комментарии:

1. в if request.method == 'POST' вы можете сделать for form in formset

2. @AndreyBorzenko, большое спасибо! Не могу поверить, что я об этом не подумал, да!!

3. Это происходит :), тогда я только что добавил ответ.

Ответ №1:

В разделе if request.method == 'POST' вы можете сделать for form in formset

Комментарии:

1. Итак, я знаю, что это не связано, и я могу задать новый вопрос, но сейчас я сталкиваюсь с этой ошибкой: Cannot assign "1930": "AppContactCnt.idcst_cnt" must be a "AppCustomerCst" instance. есть мысли?

2. Похоже, что вместо целого идентификатора idcst_cnt=id вам нужно присвоить его экземпляру AppCustomerCst с этим идентификатором, что-то вроде этого: idcst_cnt=AppCustomerCst.objects.get(id=id)