六.2--客户展示之编辑客户功能

开始写编辑功能:

1.编辑显示

(1)crm/urls.py中:

#编辑客户
url(r'customer/edit/(\d+)', views.edit_customer, name='edit_customer'),#编辑要选中哪个客户,客户有id,所以让url显示id

(2)views.py中:传回前端页面并实例化form表单

# 编辑客户
def edit_customer(request, edit_id):#并传一个从url中的客户id参数
# 根据ID查出所需要编辑的客户对象
obj = models.Customer.objects.filter(id=edit_id).first()
form_obj = CustomerForm(instance=obj)# 将提交的数据和要修改的实例交给form对象用instatance将obj客户对象和form表单关联起来
return render(request, 'crm/edit_customer.html', {"form_obj": form_obj})

(3)templates/crm/edit_customer.html中:

{% extends 'layout.html' %}
{% block content %}


编辑客户






{% csrf_token %}
{% for field in form_obj %}





{{ field }}

{{ field.errors.0 }}



{% endfor %}
{# 生成提交按钮 #}










{% endblock %}

效果如下:默认显示了这么多数据,这就是modeform提供的方法,你仅仅传instance参数,你只要把你要展示的对象(要编辑的对象传进来)即可。

六.2--客户展示之编辑客户功能_第1张图片

 

 

(4)在客户展示页面给它加一个a标签,a标签里给它来一个按钮i标签,这样你一点就能进去编辑页面:customer_list.html中:

六.2--客户展示之编辑客户功能_第2张图片

 

 效果如下图:点击编辑的小图标即可进去编辑某客户的编辑页面如第一个客户的http://127.0.0.1:8080/crm/customer/edit/1

六.2--客户展示之编辑客户功能_第3张图片

2.提交数据

(1)views.py中:判断,检验,跳转---如下就实现提交了!

# 编辑客户
def edit_customer(request, edit_id):
# 根据ID查出所需要编辑的客户对象
obj = models.Customer.objects.filter(id=edit_id).first()
form_obj = CustomerForm(instance=obj)
if request.method == 'POST':
# 将提交的数据和要修改的实例交给form对象
form_obj = CustomerForm(request.POST, instance=obj)
if form_obj.is_valid():#对数据校验
form_obj.save()#保存数据
return redirect(reverse('customer'))#保存完跳转

return render(request, 'crm/edit_customer.html', {"form_obj": form_obj})

你可能感兴趣的:(六.2--客户展示之编辑客户功能)