Django - я больше не могу сохранить форму с динамическим набором форм
Мне нужна ваша помощь в решении проблемы, которую я не могу решить или найти решение в интернете.
У меня есть форма регистрации пользователя, которая раньше работала правильно. Но возникла необходимость вставить динамический набор форм.
Однако, теперь с набором форм при заполнении и отправке формы, данные не сохраняются в базе данных и вместо перенаправления на список пользователей, я снова перенаправляюсь на форму, уже заполненную данными, которые не удалось отправить и без отображения какой-либо ошибки.
- models.py
class Contato(models.Model):
tipo = (
('Residencial', 'Residencial'),
('Comercial', 'Comercial'),
('Celular', 'Celular'),
('WhatsApp', 'WhatsApp'),
)
# Contato
email_p = models.EmailField(blank=True, null=True, verbose_name='E-mail pessoal')
email_c = models.EmailField(blank=True, null=True, verbose_name='E-mail corporativo')
proprietario = models.ForeignKey(Perfil, on_delete=models.CASCADE)
tipo_contato = models.CharField(verbose_name='Tipo', choices=tipo, max_length=11, blank=True, null=True)
telefone = models.CharField(max_length=16, blank=True, null=True)
def __str__(self):
return self.proprietario, self.telefone
- forms.py
- views.py
""" Implementando classes para o método de CREATE """
class UsuarioCreate(GroupRequiredMixin, LoginRequiredMixin, SuccessMessageMixin, CreateView):
template_name = 'Cadastro/formulario_usuario.html'
group_required = u"Adminstrador"
form_class = UsuarioForm
success_url = reverse_lazy('listar-usuario')
success_message = "Cadastrado com sucesso"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['titulo'] = 'Registro de novo usuário'
context['botao'] = 'Cadastrar'
if self.request.POST:
context['form'] = UsuarioForm(self.request.POST)
context['contato_form'] = UsuarioFormSet(self.request.POST)
else:
context['form'] = UsuarioForm()
context['contato_form'] = UsuarioFormSet()
return context
def form_valid(self, form):
group = self.request.POST.get('grupo')
grupo = get_object_or_404(Group, id=group)
self.object.groups.add(grupo)
self.object.save()
Perfil.objects.create(
usuario=self.object,
nome_completo=self.request.POST.get('nome_completo'),
cpf=self.request.POST.get('cpf'),
rg=self.request.POST.get('rg'),
org_exp=self.request.POST.get('org_exped'),
telefone=self.request.POST.get('telefone'),
local=self.request.POST.get('local'),
data_nascimento=self.request.POST.get('data_nasc'),
data_emissao=self.request.POST.get('data_emiss'),
nome_mae=self.request.POST.get('nome_mae'),
nome_pai=self.request.POST.get('nome_pai'),
tipo_contato=self.request.POST.get('tipo_contato'),
numero_casa=self.request.POST.get('numero_casa'),
Estado=self.request.POST.get('estado'),
Cidade=self.request.POST.get('cidade'),
Bairro=self.request.POST.get('bairro'),
complemento=self.request.POST.get('complemento_casa'),
dt_cadastro=self.request.POST.get('dt_cadastro'),
dt_inicio=self.request.POST.get('dt_inicio'),
email_p=self.request.POST.get('email_p'),
email_c=self.request.POST.get('email_c'),
)
context = self.get_context_data()
forms = context['form']
formset = context['contato_form']
if forms.is_valid() and formset.is_valid():
self.object = form.save()
forms.instance = self.object
formset.instance = self.object
forms.save()
formset.save()
else:
return self.render_to_response(self.get_context_data(form=form))
return super(UsuarioCreate, self).form_valid(form)