目前我有一个Django表单,我可以在其中添加新客户到数据库。我还有一个表格,显示当前在此数据库中的所有客户。现在,我想点击客户表中的客户名称以打开现有客户,并可以选择编辑记录并保存。
以下是我目前的代码部分,如果需要更多,请询问。
我的navbar.html
<li><a href='{% url "customeradd" %}'>New Customer</a></li>
my urls.py
url(r'^customeradd/$', 'customer.views.customeradd', name='customeradd'),
my 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>
现在我可以点击customer表中的客户名称,并打开CustomerAddForm。由于没有给出任何论据,当前情况下的背景是空的。
当点击customeroverview.html中的customer.customer_name超链接时,如何将customer.id字段作为参数传递?
我如何在视图中捕获此customer.id- urls.py应该如何?
使用现有的customer.id打开表单时,如何保存当前记录而不是创建新的customer.id
关于这种情况的任何帮助/建议对我理解Django GET / POST非常有帮助。
答案 0 :(得分:2)
也许你应该这样做:
在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>
答案 1 :(得分:1)
基本上,你所说的是CRUD(创建,读取,更新和删除)。 如果您正在编写一个简单的Web应用程序GUI(对我来说似乎如此),可以找到一个简单的示例here,了解如何使用Django实现CRUD。
但是,如果您正在编写REST API,事情会变得复杂一些。 Django REST Framework可能会有所帮助。