Preben Hesvik
Preben Hesvik

Reputation: 57

url: Reverse for 'contract_update' with arguments '('',)'

I can't understand why the following isn't working: Please help me figure out what I am doing wrong.

template

 data-url="{% url 'dashboard:contract_update' contract.pk %}"

urls.py

url(r'^(?P<pk>[0-9]+)/contract-update/$', views.contract_update, name='contract_update'),

views.py

def contract_update(request, pk):
''' Updates instance of contract '''

contract = get_object_or_404(Contract, pk=pk)
template = 'dashboard/includes/contract/modal/partial_contract_update.html'
print(contract)

if request.method == 'POST':
    form = ContractForm(request.POST, instance=contract)
    print("contactperson_update: request.method = post")
else:
    form = ContractForm(instance=contract)

return save_contract_form(request, form, template)

console.log(url) = /1/contract-update/

error message:

django.urls.exceptions.NoReverseMatch: Reverse for 'contract_update' with arguments '('',)' not found. 1 pattern(s) tried: ['(?P<pk>[0-9]+)/contract-update/$']

I have the same code for contactpersons and it is working.

data-url="{% url 'dashboard:contactperson_update' contact.pk %}"    
url(r'^(?P<pk>[0-9]+)/contactperson-update/$', views.contactperson_update, name='contactperson_update'),

Upvotes: 0

Views: 40

Answers (1)

Preben Hesvik
Preben Hesvik

Reputation: 57

Thank you so much Alasdair.

Changed my template from

<form method="post" action="{% url 'dashboard:contract_update' form.instance.contract.pk %}" class="js-contract-update-form">

to

<form method="post" action="{% url 'dashboard:contract_update' form.instance.pk %}" class="js-contract-update-form">

my main mistake was copy/pasting from a previous template without paying attention to details...

Upvotes: 1

Related Questions