Reputation: 57
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
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