开始写编辑功能:
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 %}
编辑客户
{% endblock %}效果如下:默认显示了这么多数据,这就是modeform提供的方法,你仅仅传instance参数,你只要把你要展示的对象(要编辑的对象传进来)即可。
(4)在客户展示页面给它加一个a标签,a标签里给它来一个按钮i标签,这样你一点就能进去编辑页面:customer_list.html中:
效果如下图:点击编辑的小图标即可进去编辑某客户的编辑页面如第一个客户的http://127.0.0.1:8080/crm/customer/edit/1
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})