目前,我有一个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/

10-16 22:34