目前,我有一个Django Form,可以在其中向数据库添加新客户。我还有一张表,显示此数据库中当前的所有客户。现在,我想在客户表中单击客户名称以打开现有客户,并可以选择编辑记录并保存。
以下是我当前的代码部分,如果需要更多内容,请询问。
我的navbar.html
<li><a href='{% url "customeradd" %}'>New Customer</a></li>
我的urls.py
url(r'^customeradd/$', 'customer.views.customeradd', name='customeradd'),
我的views.py
def customeradd(request):
form = CustomerAddForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
save_it = form.save(commit=False)
save_it.save()
messages.success(request, 'Customer added succesfully')
return HttpResponseRedirect('/customeroverview/')
else:
messages.error(request, 'Customer save error, please check fields below')
else:
form = CustomerAddForm()
return render_to_response("customer-add.html",
{"customer_add_form": form},
context_instance=RequestContext(request))
customeroverview.html,显示所有客户的表格(仅显示三个字段)
<td><a href='{% url "customeradd" %}'>{{ customer.customer_name }}</a></td>
<td>{{ customer.customer_type }}</td>
<td>{{ customer.customer_address }}</td>
现在,我可以在客户表中单击客户名称,然后CustomerAddForm将打开。由于没有给出论据,当前情况下的话语权是空的。
在customeroverview.html中单击customer.customer_name超链接时,如何传递customer.id字段作为参数?
我将如何在视图中捕获此customer.id-urls.py的外观如何?
当使用现有的customer.id打开表单时,如何保存当前记录而不是创建新的customer.id
在这种情况下的任何帮助/建议对我对Django GET / POST的理解都是非常有帮助的。
最佳答案
也许您应该这样做:
在urls.py中
url(r'^customeradd/(?P<id>\w+)$', 'customer.views.customeradd', name='customeredit'),
url(r'^customeradd/$', 'customer.views.customeradd', name='customeradd'),
在您的views.py中:
def customeradd(request, id = None):
if id:
customer = Customer.objects.get(pk = id)
else
customer = None
form = CustomerAddForm(request.POST, instance = customer)
.....
在您的模板中
<td>< a href='{% url "customeredit" customer.id %}' >{{ customer.customer_name }}</a></td>
<td>{{ customer.customer_type }}</td>
<td>{{ customer.customer_address }}</td>
关于python - 以Django形式打开/编辑/保存记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26266873/