因此,我一直在研究这个来自Simple is better than complex: How to Implement CRUD Using Ajax and Json的ajax CRUD教程
事件虽然我可以让CRUD的"create“部分与ajax一起工作,但我被"update部分”卡住了。
要更新客户的数据,我需要检索"customer.id“并将其传递给url。
在上面描述的教程中,我们使用带有book.id参数的表单操作,或者在我的例子中是customer.id。
当我使用直接客户id时,例如#72,视图工作正常,但是当我尝试使用form.instance.pk时,我得到一个NoReverseMatch错误。
Reverse for 'customer_update_modal' with arguments '('',)' not found. 1 pattern(s) tried: ['customer/(?P<pk>\\d+)/update/$']我应该如何将customer.id放入参数中以获得所需的结果?
partial_customer_update.html
<form class="form-on-card--modal modal-trigger js-customer-update-form" action="{% url 'customer_update_modal' form.instance.pk %}" method="POST" novalidate>views.py
def save_customer_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
data['form_is_valid'] = True
customers = Customer.objects.all()[:10]
data['html_show_all_customers'] = render_to_string('includes/partial_customer_list.html',
{'customer_list': customers}
)
else:
data['form_is_valid'] = False
context = {'form': form}
data['html_form'] = render_to_string(template_name, context, request=request)
return JsonResponse(data)
def customer_create(request):# Function based view to create a new customer
if request.method == 'POST':
form = CustomerForm(request.POST)
else:
form = CustomerForm()
return save_customer_form(request, form, 'includes/partial_customer_create.html')
def customer_update(request, pk):
customer = get_object_or_404(Customer, pk=pk)
if request.method == 'POST':
form = CustomerForm(request.POST, instance=customer)
else:
form = CustomerForm(instance=customer)
return save_customer_form(request, form, 'includes/partial_customer_update.html')urls.py
urlpatterns += [ # Links to create, update and delete customers
url(r'^customer/create/$', login_required(views.customer_create), name='customer_create_modal'), # Function based view, mind the "as_view()"
url(r'^customer/(?P<pk>\d+)/update/$', login_required(views.customer_update), name='customer_update_modal'),]
发布于 2018-08-29 14:48:55
好了,我找到那个小混蛋了。
即使我想显示"partial_customer_update.html“,这个模板也从来没有加载过。我在模板中硬编码了"partial_customer_create.html“。
这意味着每当我试图更新表单时,它仍然触发了"partial_customer_create.html“模板。
https://stackoverflow.com/questions/52054650
复制相似问题