为clinic/edc添加仪表板方法的模型包装器。
edc-model-wrapper的Python项目详细描述
EDC模型包装器
使用自定义包装器包装模型实例,以添加edc仪表板和列表板所需的方法。
classExampleModelWrapper(ModelWrapper):model='edc_model_wrapper.example'next_url_name='edc-model-wrapper:listboard_url'next_url_attrs=['f1']querystring_attrs=['f2','f3']defhello(self):return'hello'defgoodbye(self):return'goodbye'
用模型实例实例化,是否持久化:
model_obj=Example(f1=1,f2=2,f3=3)wrapper=ExampleExampleModelWrapper(model_obj=model_obj)
为列表板、数据板等中的模型对象获取带有“next”的“admin”url,
>>>wrapper.href'/admin/edc_model_wrapper/example/add/?next=edc-model-wrapper:listboard_url,f1&f1=1&f2=2&f3=3'
获取不包含“下一个”查询字符串数据的管理URL:
>>>wrapper.admin_url_name'/admin/edc_model_wrapper/example/add/'
反转下一个URL:
>>>wrapper.reverse()'/listboard/1/'
attributemodel是一个模型类,不管它是如何声明的:
>>>assertwrapper.model==ExampleTrue
所有字段属性都转换为字符串并添加到包装器中,外键除外:
>>>wrapper.f11>>>wrapper.f22
当然,可以使用自定义方法/属性:
>>>wrapper.hello()'hello'>>>wrapper.goodbye()'goodbye'
如果需要,可以访问原始对象:
>>>wrapper.object<Example>
例如,要访问原始字段值:
>>>wrapper.report_datetime'2017-06-01 15:04:41.760296'>>>wrapper.object.report_datetimedatetime.datetime(2017,6,1,15,4,55,594512)