Na formação Django não achei nenhuma parte mostrando como trabalhar com (forms.ModelForm). Estou tentando pela documentação do Django e consegui inserir registros aparentemente corretamente, mais não consigo editar registros existentes (ele sempre cria um novo registro). Eu preciso de duas views (uma para editar e outra para salvar) ou posso fazer as duas operações na mesma View? Se alguém puder ajudar agradeço:
# models.py
class Setor(models.Model):
nome = models.CharField(max_length=50, unique=True, blank=False)
#urls.py
urlpatterns = [
path('setores',views.setores,name='setores'),
path('setor',views.setor,name='setor'),
path('setor/<int:id>',views.setor_id,name='setor_id')
]
#views.py
def setores(request):
setores = Setor.objects.all()
records = {
'setores' : setores
}
return render(request,'rhm/setores.html', records)
def setor(request):
if request.method == 'POST':
form = SetorForm(request.POST)
if form.is_valid():
form_clean = form.cleaned_data
form.save()
return redirect('setores')
else:
form = SetorForm()
return render(request,'rhm/setor.html',{'form':form})
def setor_id(request, id):
setor = Setor.objects.get(pk=id)
form = SetorForm(instance=setor)
if request.method == 'POST':
form = SetorForm(request.POST, instance=setor)
if form.is_valid():
setor = form.cleaned_data
setor.save()
return redirect('setores')
else:
return render(request,'rhm/setor.html',{'form':form,'setor':setor})
elif(request.method == 'GET'):
return render(request,'rhm/setor.html',{'form':form,'setor':setor})