CRUD组件的高阶使用
def get_all_url(patterns, prev, is_first=False, result=[]):
"""
[
(ur1,ur1,)
(ur1,ur1,)
(ur1,ur1,)
(ur1,ur1,)
]
:param patterns:
:param prev:
:param is_first:
:param result:
:return:
"""
if is_first:
result.clear()
for item in patterns:
v = item._regex.strip("^$")
if isinstance(item, RegexURLPattern):
val = prev + v
result.append((val, val,))
else:
get_all_url(item.urlconf_name, prev + v) return result
#url.choices=get_all_url(urlpatterns,"/",True) #此种赋值方式1:会使urlpatterns提前执行,引发错误
#2.当新增url时,不能时时刷新,因为PermissionModelForm声明时会取一遍url,
class PermissionModelForm(ModelForm):
url = fields.ChoiceField() # 若该字段名和Permission中的某字段重名,则会将该字段替换,不重名,则添加新的 # from pro_crm.urls import urlpatterns
# url.choices=get_all_url(urlpatterns,"/",True) #此种赋值方式1:会使urlpatterns提前执行,引发错误
# 2.当新增url时,不能时时刷新,因为PermissionModelForm声明时会取一遍url,
# 当用其new对象时,不会再去获取新的url,因此需要将获取url的逻辑写在__init__中 class Meta:
model = models.Permission
fields = "__all__" def __init__(self, *args, **kwargs):
super(PermissionModelForm, self).__init__(*args, **kwargs)
from pro_crm.urls import urlpatterns
self.fields["url"].choices = get_all_url(urlpatterns, "/", True)

class ClassListConfig(sites.AryaConfig):
def course_display(self, obj=None, is_header=False):
if is_header:
return "班级"
else:
tpl = "{}({}期)".format(obj.course.name,obj.semester)
return tpl
def teachers_display(self,obj=None,is_header=False):
if is_header:
return "任课老师"
else:
teachers = obj.teachers.all()
result = []
for teacher in teachers:
tpl = "<span>{}</span>".format(teacher.name)
result.append(tpl)
return mark_safe(" ".join(result))
list_display = ["school",course_display,"tutor",teachers_display,"price",]
sites.site.register(models.ClassList,ClassListConfig)


def date(self, obj=None, is_header=False):
if is_header:
return "交款日期"
else:
return obj.date.strftime("%Y-%m-%d") list_display = ["customer","class_list",pay_type_choices,"paid_fee","consultant",date]
7.list_filter的配置
class CustomerConfig(sites.AryaConfig):
.......
list_filter = [
# sites.FilterOption("name",False,lambda x:x.name,lambda x:x.name),#这种配置无意义
sites.FilterOption("consultant",False,condition=Q(depart=1)),#传条件以显示筛选项
sites.FilterOption("course",True),#咨询课程
sites.FilterOption("gender",False),#choices
]
sites.site.register(models.Customer,CustomerConfig)

CRUD组件的高阶使用的更多相关文章
- 聊聊React高阶组件(Higher-Order Components)
使用 react已经有不短的时间了,最近看到关于 react高阶组件的一篇文章,看了之后顿时眼前一亮,对于我这种还在新手村晃荡.一切朝着打怪升级看齐的小喽啰来说,像这种难度不是太高同时门槛也不是那么低 ...
- 当初要是看了这篇,React高阶组件早会了
当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...
- React文档(二十四)高阶组件
高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑.HOCs本质上不是React API的一部分.它是从React的组合性质中显露出来的模式. 具体来说,一个高阶组件就是一个获取一个组件 ...
- React进阶之高阶组件
前言 本文代码浅显易懂,思想深入实用.此属于react进阶用法,如果你还不了解react,建议从文档开始看起. 我们都知道高阶函数是什么, 高阶组件其实是差不多的用法,只不过传入的参数变成了react ...
- 【转】react的高阶组件
React进阶之高阶组件 前言 本文代码浅显易懂,思想深入实用.此属于react进阶用法,如果你还不了解react,建议从文档开始看起. 我们都知道高阶函数是什么, 高阶组件其实是差不多的用法,只 ...
- 函数式编程与React高阶组件
相信不少看过一些框架或者是类库的人都有印象,一个函数叫什么creator或者是什么什么createToFuntion,总是接收一个函数,来返回另一个函数.这是一个高阶函数,它可以接收函数可以当参数,也 ...
- react:高阶组件wrappedComponent
什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说,高阶组件就是一个接收一个组件并返回另外一个新组件的函 ...
- 高阶组件(Higher-Order Components)
有时候人们很喜欢造一些名字很吓人的名词,让人一听这个名词就觉得自己不可能学会,从而让人望而却步.但是其实这些名词背后所代表的东西其实很简单. 我不能说高阶组件就是这么一个东西.但是它是一个概念上很简单 ...
- 修饰器&高阶组件
一.修饰器 1.类的修饰 修饰器是一个函数,用来修改类的行为 function testable(target) { target.isTestable = true; } @testable cla ...
随机推荐
- MongoDb进阶实践之四 MongoDB查询命令详述
一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...
- Luogu 3960 [NOIP2017] 列队 - splay|线段树
题解 是我从来没有做过的裂点splay... 看的时候还是很懵逼的QAQ. 把最后一列的$n$个数放在一个平衡树中, 有 $n$ 个点 剩下的$n$行数, 每行都开一个平衡树,开始时每棵树中仅有$1$ ...
- 工作五年以上的 UI 设计师都在干什么?
30 岁,现在坐标北京,从毕业至今都一直在做设计.目前从业超过了五年,也没打算离开设计这个行业.即便有一天不再从事设计专职的岗位,也仍然会在生活中,或者一些份外的工作中做「设计师」的角色,因为设计已成 ...
- 5条面经,助你成功拿到UX设计师Offer
为什么成为 UX设计师? 如果你经常逛推酷, 知乎, 设计达人或者一些专业的设计师论坛,博客,你会发现,第一批成为UX设计师的人,其实是误打误撞地落入这个行业的.那时候人们并不清楚UX设计师是什么 ...
- 转载hibernate 的3种 状态 。。
转自 http://huangtut.iteye.com/blog/261520 对我有帮助,所以收藏了 Hibernate三种状态的区分,以及save,update,saveOrUpdate,m ...
- js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意
js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意 如 ${ } <%%> 等
- div和span元素的区别
2个都是用来划分区间但是没有实际语义的标签,差别就在于div是块级元素,不会其他元素在同一行;span是内联元素,可以与其他元素位于同一行. DIV 和 SPAN 元素最大的特点是默认都没有对元素内的 ...
- 201.09.22 除虫药水(线性dp)
描述 在十年前,除虫是十分艰苦的工作.那时,使用普通药水进行除虫的效果极差,在一片苹果 林中使用后除掉的虫仅为极小一部分. 比如说,Bugs 镇共有 N 片苹果林,对第i 片使用普通药水可以除掉 ai ...
- java最全的Connection is read-only. Queries leading to data modification are not allowed
Connection is read-only. Queries leading to data modification are not allowed 描述:框架注入时候,配置了事物管理,权限设置 ...
- UVa 10382 Watering Grass (区间覆盖贪心问题+数学)
题意:有一块长为l,宽为w的草地,在其中心线有n个喷水装置,每个装置可喷出以p为中心以r为半径的圆, 选择尽量少的装置,把草地全部润湿. 析:我个去啊,做的真恶心,看起来很简单,实际上有n多个坑啊,首 ...