doc.: https://docs.djangoproject.com/en/2.1/topics/forms/modelforms
class AddressForm(forms.ModelForm):
class Meta:
model = Address
# fields = '__all__'
fields = ('address', 'address_complement', 'city', 'state', 'country')
widgets = {
'address': forms.TextInput(attrs={'class': 'form-control'}),
'address_complement': forms.TextInput(attrs={'class': 'form-control'}),
'city': forms.TextInput(attrs={'class': 'form-control'}),
'state': forms.Select(attrs={'class': 'form-control'}),
'country': forms.TextInput(attrs={'class': 'form-control'})
}
def address_create(request):
form_submitted = False
if request.method == 'GET':
form = AddressForm()
else:
form_submitted = True
form = AddressForm(request.POST)
if form.is_valid():
# apenas hidrata o `address` sem salvar no banco
address = form.save(commit=False)
# para podermos associar o user
address.user = request.user
address.save()
return redirect('/addresses/')
return render(request, 'my_app/address/create.html',
{'form': form, 'form_submitted': form_submitted}
)
def address_update(request, id):
form_submitted = False
address = Address.objects.get(id=id)
if request.method == 'GET':
form = AddressForm(instance=address)
else:
form_submitted = True
form = AddressForm(request.POST, instance=address)
if form.is_valid():
address.save()
return redirect('/addresses/')
return render(request, 'my_app/address/update.html',
{'address': address, 'form': form, 'form_submitted': form_submitted})