[Answer]-Django Open / Edit record instead of Creating new

1๐Ÿ‘

โœ…

use this:

def customeradd(request, id=None): 
    if id:
        customer = Customer.objects.get(pk = id)
    else:
        customer = Customer()

    if request.method == 'POST':
        form = CustomerAddForm(request.POST, instance=customer)
        if form.is_valid():
            form.save()
            messages.success(request, 'Customer added succesfully')
            return HttpResponseRedirect('/customeroverview/')
        else:
            messages.error(request, 'Customer save error, please check fields below')
    else:
        form = CustomerAddForm(instance = customer)

    return render_to_response("customer-add.html",
                              {"customer_add_form": form},
                              context_instance=RequestContext(request))

and replace

self.helper.form_action = '/customeradd/'

with

self.helper.form_action = ''

in your forms.py

๐Ÿ‘คHasan Ramezani

0๐Ÿ‘

You can use a specific function to edit a customer:

@require_POST
@csrf_protect
def customeredit(request, id=None): 

    edited_customer = CustomerAddForm(request.POST)

    if edited_customer.is_valid():
        customer = edited_customer.save(commit=False)
        customer.id = id
        customer.save()
        messages.success(request, 'Customer edited succesfully')
        return HttpResponseRedirect('/customeroverview/')
    else:
        messages.error(request, 'Customer save error, please check fields below')
        return render_to_response("customer-add.html",
                          {"customer_add_form": edited_customer},
                          context_instance=RequestContext(request))

That means you need to modify urls.py

url(r'^customeredit/(?P<id>\w+)$', 'customer.views.customeraedit', name='customeredit'), 
๐Ÿ‘คaldo_vw

Leave a comment