
</p><p> <br></p><p> <br></p><p> </p><ul><li>1、需求分析</li><li>2、数据库表设计</li><li> 3、起步</li><li>4、录入数据</li><li> 5、知识点</li></ul><p> <br></p><p> <br></p><p> </p><p> <br></p><p> <br></p><p><br></p><p> <br></p><p> <br></p><p>CRM客户关系管理软件---》 学员管理</p><p>用户:企业内部用户</p><p>用户量:</p><p>业务场景:</p><p> </p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16db98a71168.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_crm 企业系统架构图' style="width: 682px; visibility: visible;"></p><p> <br></p><p> <br></p><p><br></p><p> <br></p><p> <br></p><h4 id="h3">1 、表之间的对应关系</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e1d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_02' style="width: 1023px; visibility: visible;"></p><p> <br></p><p> <br></p><div></div><p> <br></p><p> <br></p><p> </p><h4 id="h4"> 2、详细表设计models.py</h4><p> <br></p><p> <br></p><p> <br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e30eed19892.gif' alt='crm 企业系统架构图_Customer_03' style="width: 11px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e40afe19526.gif' alt='crm 企业系统架构图_python_04' style="width: 11px; visibility: visible;"></p><div></div><p> <br></p><p> View Code <br></p><p> <br></p><p> </p><p> </p><p> </p><p> <br></p><p> <br></p><p><br></p><p> <br></p><p> <br></p><h4 id="h6">1、urls</h4><p> <br></p><p> <br></p><div></div><p> <br></p><p> <br></p><p> </p><h4 id="h7">2、导入stark组件,配置</h4><p> 将组件直接可以复制到CRM系统中,然后在app的setting中进行注册。</p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e87b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_crm 企业系统架构图_05' style="width: 469px; visibility: visible;"></p><p> </p><h4 id="h8">3、CRM的Stark配置</h4><p> <br></p><p> <br></p><div></div><p> <br></p><p> <br></p><p> </p><p> <br></p><p> <br></p><p> 将CRM的所有表全部注册到Stark组件中。</p><p> </p><p> <br></p><p> <br></p><p><br></p><p> <br></p><p> <br></p><p>注册完成开始录入一些测试数据,注册成功会出现下面的URL。</p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16eb61c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_06' style="width: 560px; visibility: visible;"></p><h4 id="h10">1、School表</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16eeeb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_07' style="width: 745px; visibility: visible;"></p><h4 id="h11">2、员工表UserInfo</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16f3ebe.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_08' style="width: 911px; visibility: visible;"></p><h4 id="h12">3、班级表Classlist</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16f7c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_09' style="width: 675px; visibility: visible;"></p><h4 id="h13">4、客户表Customer</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16fb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_10' style="width: 710px; visibility: visible;"></p><h4 id="h14">5、部门表Department</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16feb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_11' style="width: 589px; visibility: visible;"></p><h4 id="h15">6、课程表Course</h4><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b17028a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_12' style="width: 547px; visibility: visible;"></p><p> </p><p> <br></p><p> <br></p><p><br></p><p> <br></p><p> <br></p><h4 id="h17">1、limit_choices_to</h4><h5>model与form组件的多对多关系如何渲染的</h5><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b1706efef45555.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_13' style="width: 1156px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b1709d64a18639.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_14' style="width: 659px; visibility: visible;"></p><h5>limit_choices_to</h5><p> <br></p><p> <br></p><div></div><p> #首先有一个limit_choice_to字段:<br> teachers = models.ManyToManyField(verbose_name='任课老师', to='UserInfo',related_name="abc",limit_choices_to={"depart__in":[1002,1005]})<br> #这样限定他的部门只能是linux和python学部的员工为任课老师,可以把班主任限制在销售部的员工。</p><p> <br></p><p> <br></p><p> </p><p><strong>如下图:</strong></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b170eac1b35874.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_crm 企业系统架构图_15' style="width: 1156px; visibility: visible;"></p><p> </p><p> </p><h4 id="h18"> 2、自定制 display_classname</h4><p> <br></p><p> <br></p><div></div><p> <br></p><p> <br></p><p> </p><p> <br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9ba80761.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_16' style="width: 535px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b25.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_Customer_17' style="width: 386px; visibility: visible;"></p><p> </p><h4 id="h19">3、obj.get_gender_display() 显示option的值(Django自带方法)</h4><p> <br></p><div></div><p> <br></p><p> 对比:</p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b171b4a1e15314.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_crm 企业系统架构图_18' style="width: 367px; visibility: visible;"></p><p> <br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b171ef85e23604.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_python_19' style="width: 384px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b17233f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_json_20' style="width: 468px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b1726a4c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_数据库_21' style="width: 381px; visibility: visible;"></p><h4 id="h20">4.mark_safe()</h4><p><em>通过mark_safe()可以让模板不进行转义,渲染成想要的标签等。</em></p><p> <br></p><div></div><p> <br></p><p> </p><p> </p><h4 id="h21">5、extra_url() 额外的url接口</h4><p> <br></p><div></div><p> def extra_url(self):<br> temp=[]<br> temp.append(url(r'record_score/(d+)',self.score))<br> return temp</p><p> <br></p><p> </p><h4 id="h22">6、课程点击取消</h4><p> <br></p><div></div><p> #点击a标签,从那个接口的url发一个请求,<br> def cancel_course(self,request,customer_id,course_id):<br> # print(customer_id,course_id)<br> obj=self.model.objects.filter(pk=customer_id).first() #取到这个取消课程的客户对象。<br> obj.course.remove(course_id) #这个客户把课程ID为某一个的课程取消掉。 #把对象通过字段找到的课程remove掉,传入remove的课程ID<br> #最后重新定向回来展示页面,这样可以做出一个点击课程就可取消的效果。<br> return redirect(self.get_list_url())</p><div></div><p> <br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9be56616.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='crm 企业系统架构图_python_22' style="width: 829px; visibility: visible;"></p><p> <br></p><p><br></p><p> <br></p><h4 id="h24">1、starkadmin代码</h4><p> <br></p><div></div><p> <br></p><p> </p><p> <br></p><p> </p><h4 id="h25">2、stark组件代码:</h4><p> <br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e30eed19892.gif' alt='crm 企业系统架构图_Customer_03' style="width: 11px; visibility: visible;"></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog//_66e9b16e40afe19526.gif' alt='crm 企业系统架构图_python_04' style="width: 11px; visibility: visible;"></p><div></div><p> View Code <br></p><p> </p><p> </p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/175422.html