def edit_fulladdress(request): print "edit full" user_profile = request.user.user_profile saved = False new_address_parts = { 'city': False, 'address': False } if request.method == 'POST': print "Request method is PPOST" form = FullAddressForm(request.POST) if form.is_valid(): print "Form is valid" # Address : address and city city_data = { 'name': form.cleaned_data['city'], 'zipcode': form.cleaned_data['zipcode'], 'country': form.cleaned_data['country'] } # Check if we can get this city # If the city doesn't exist, we try to create it, but data may be incomplete try: city = City.objects.get(**city_data) except ObjectDoesNotExist: try: city = CityForm(data=city_data).save() if city is not None: new_address_parts['city'] = True new_address_parts['city_name'] = city.__str__() except ValueError: city = None if city is not None: address_data = { 'num': form.cleaned_data['num'], 'street': form.cleaned_data['street'], 'city': city.pk, } try: address = Address.objects.get(**address_data) except ObjectDoesNotExist: try: address = AddressForm(data=address_data).save() print "SAVe address" new_address_parts['address'] = True except ValueError: address = None else: address = None user_profile.address = address user_profile.save() saved = True else: return render(request, 'forms/self_edit/address.html', {'form': form}) init_data = {} if user_profile.address is not None: user_address = Address.objects.get(pk=user_profile.address.pk) user_city = City.objects.get(pk=user_address.city.pk) init_data.update({ 'num': user_address.num, 'street': user_address.street, 'city': user_city.name, 'zipcode': user_city.zipcode, 'country': user_city.country, }) return render(request, 'forms/self_edit/address.html', { 'form': FullAddressForm(initial=init_data), 'notice_saved': saved, 'new_address_parts': new_address_parts }) else: return render(request, 'forms/self_edit/address.html', { 'form': FullAddressForm(), 'notice_saved': False })