crm 简约笔记
crm
# 给modelform使用的
tutor = models.ForeignKey(verbose_name='班主任', to='UserInfo', related_name='classes',limit_choices_to={"depart__in":[1004,1005]},on_delete=models.CASCADE)
# limit_choices_to={"depart__in":[1004,1005]}
modelform做渲染时,使用筛选后的数据。
# 显示choices的值
record_choices = (('checked', "已签到"),)
record = models.CharField("上课纪录", choices=record_choices, default="checked", max_length=64)
def show_gender(self,obj=None,is_header=False):
if is_header:
return '性别'
return obj.get_gender_display()
# CSS3 ::selection 选择器
# 使被选中的文本成为红色:
::selection
{
color:#ff0000;
}
# 获取完整url,包括?后的请求信息
request.get_full_path_info()
# 更新update操作,当filter(xx=oo)的xx不确定时,可用字典传参解决。
d = {}
key_id = request.POST.get('name')
val = request.POST.get('val')
key,id = key_id.split('_')
d[key]=val
o = StudyRecord.objects.filter(pk=id).update(**d)
#-==============highcharts插件以统计图的方式展示学生成绩=-=-=-=-=-=-=-=-=-
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
<script src="/static/js/jquery-1.12.4.min.js"></script>
<script src="/static/chart/highcharts.js"></script>
<style>
span {
padding: 2px 5px;
margin: 2px;
border: 1px solid deepskyblue;
}
</style> <div id="container" style="width:600px;height:400px" class="col-md-offset-1"></div>
<script>
$(".check_chart").click(function () { $.ajax({
url: "",
type: "get",
data: {
sid: $(this).attr("sid"),
cid: $(this).attr("cid")
},
success: function (data) { // 显示柱状图
var chart = Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: '查看成绩'
},
subtitle: {
{#text: '数据截止 2017-03,来源: <a href="https://en.wikipedia.org/wiki/List_of_cities_proper_by_population">Wikipedia</a>'#}
},
xAxis: {
type: 'category',
labels: {
rotation: -45 // 设置轴标签旋转角度
}
},
yAxis: {
min: 0,
title: {
text: '分数'
}
},
legend: {
enabled: false
},
tooltip: {
pointFormat: '分数: <b>{point.y:.2f}</b>'
},
series: [{
name: '总人口',
data: data,
dataLabels: {
enabled: true,
rotation: -40,
color: '#fff29f',
align: 'right',
format: '{point.y:.1f}', // :.1f 为保留 1 位小数
y: 10
}
}]
});
}
})
})
</script>
# -=-=-=-=-=-=判断是否是多对多字段-=-=-=-=-
filter_field_obj = self.config.model._meta.get_field(filter_field) # 字段对象
# print(type(filter_field_obj))
if isinstance(filter_field_obj,ManyToManyField) or isinstance(filter_field_obj,ForeignKey):
data_list = filter_field_obj.remote_field.model.objects.all() # 获取外键表数据
# =-=-=-=-=-=-=-根据model不同字段渲染table内容=-=-=-=-=-=-=-
if isinstance(field_obj,ManyToManyField):
to_objlist = getattr(obj,field).all()
t=[]
for to_obj in to_objlist:
t.append('<span class="author pull-left">%s</span>'%str(to_obj))
val = mark_safe(''.join(t))
else:
if field_obj.choices:
val = getattr(obj, 'get_'+field+'_display')
else:
val = getattr(obj,field)
# 检测是否指定编辑跳转字段
if field in self.config.list_display_links:
val = mark_safe('<a href="%s%s">%s</a>'%(self.config.get_change_url(obj),par,val))
crm 简约笔记的更多相关文章
- SAP CRM 项目笔记(一) SOW(工作说明书)讨论
前记 前两天在搜索资料时,看到一个网友在博客里面记录下了自己参于项目中的所有笔记.我觉得这个想法很不错,所以决定开笔记录下SAP CRM整个项目的实施和开发过程. 之前参加集团的SAP ERP(FI/ ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") &a ...
- Dynamic CRM 2013学习笔记(二)插件基本用法及调试
插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...
- Dynamic CRM 2013学习笔记(四)单据编号及插件批量注册工具
基本上每个实体form上都会有单据编号,而且不同的实体编号要求还不太一样,这时就需要一个通用的单据编号插件,可配置以应对不同的需求. 下面简单介绍下实现步骤: 1. 创建二个实体,以保存各实体所要求的 ...
- Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据
审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ...
- Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件
上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...
- Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件
上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...
- Dynamic CRM 2013学习笔记(十四)复制/克隆记录
经常有这样的需求,一个单据上有太多要填写的内容,有时还关联多个子单据,客户不想一个一个地填写,他们想从已有的单据上复制数据,克隆成一条新的记录.本文将介绍如何克隆一条记录,包括它的子单据以生成一条新的 ...
随机推荐
- Zookeeper的多节点集群详细启动步骤(3或5节点)
分为 (1)分别去3或5节点上去启动Zookeeper进程 (2)自己写个脚本,直接在主节点上去启动Zookeeper进程. (1)分别去3或5节点上去启动Zookeeper进程 第一步: [hado ...
- Oozie的架构
Oozie的架构图,如下: 从oozie的架构图中,可以看到所有的任务都是通过oozie生成相应的任务客户端,并通过任务客户端来提交相应的任务. 继续...
- Git团队协作 - 新feature的开发过程
新feature的开发过程 建议使用SmartGit,以下是命令行操作 git checkout -b dev (对于没有分支的人)新建dev分支 git pull origin dev拉取最新数据 ...
- LSP
Liskov Substitution Principle里氏替换原则,OCP作为OO的高层原则,主张使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为 ...
- nodejs+multer+ajax文件上传
前端 html代码 + ajax代码 form表单(无需指定action) <form enctype="multipart/form-data" method=" ...
- Java并发——结合CountDownLatch源码、Semaphore源码及ReentrantLock源码来看AQS原理
前言: 如果说J.U.C包下的核心是什么?那我想答案只有一个就是AQS.那么AQS是什么呢?接下来让我们一起揭开AQS的神秘面纱 AQS是什么? AQS是AbstractQueuedSynchroni ...
- re正则表达式公式讲解4
1.re,split() 字符串分离 import re s = "abc20tyu9iou16hij25" m = re.split("\d",s) #以& ...
- C# 移动开发(Xamarin.Form) Plugin.BLE 蓝牙连接
随着Xamarin.Form项目接近尾声,仔细一算才发现过来大半年时间了. 期间除了刚开始有闲情写写,现在总算有空来总结一下了. 来先说 Plugin.BLE (https://github.com/ ...
- 为sublime Text3 安装插件JS Format
1. 安装package control 菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console.将以下 Python 代码粘贴进去并 enter 执行,不 ...
- 洛谷 P2580 于是他错误的点名开始了
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900). ...