将ODK风格的XLSForms转换为Django模型或与wq(https://wq.io/)一起使用的工具
项目描述
xlsform-converter (xlsconv)
xlsform-converter可以将通过XLSForm标准定义的调查转换为Django模型和配置。这使得可以重用Open Data Kit生态系统提供的强大的表单构建工具,同时利用Django对关系数据库(如PostgreSQL)的强大支持。
xlsform-converter旨在通过wq框架促进离线数据收集应用的快速开发。最终目标是提供与ODK和KoboToolbox(等等)提供的表单编写工具完全兼容。请注意,这并不意味着与XForm完全兼容:wq(wq.app和wq.db)客户端和服务器组件使用基于JSON的REST API交换数据,并且不直接与它们的ODK类似物(分别对应ODK Collect和ODK Aggregate)兼容。
对于数据库本身,与其它XLSForm工具(包括由Django驱动的工具,如KoboToolbox)的关键区别在于,xlsform-converter将xlsform字段直接转换为Django模型定义,而不是在Django中表示整个XForm标准。这意味着XLSForm“调查”标签中的每一行都映射到简单关系数据库表中的一列(通常是单列)。重复问题通过创建一个具有对父调查模型ForeignKey
的第二个模型来处理。
要更全面地比较XLSForm工具,请参阅https://wq.io/overview/survey123-vs-kobotoolbox-vs-wq。
xlsform-converter还支持一些XLSForm标准之外的“约束”。
wq:ForeignKey('app.ModelName')
:创建一个指向现有Django模型的外键(假设该模型在电子表格中未定义)。这实际上是一种更关系型版本的select_one_external
。wq:initial(3)
:与repeat_count
非常相似,但仅对新记录设置。wq:length(5)
:文本字段最大长度(类似于string-length
约束)。
包含的模板
xlsform-converter使用AST和模板从给定的XLSForm(例如,此文件)生成以下Django/wq项目文件。
Django应用
models.py
admin.py
(用于与django.contrib.admin
一起使用)wizard.py
(用于与Django Data Wizard一起使用)rest.py
(用于与wq.db.rest
一起使用)serializers.py
(用于与wq.db.rest
一起使用)
用法
如果您正在使用wq,您可能对wq.create感兴趣,该命令内部使用xlsconv进行wq addform
命令。否则,您可以直接使用以下命令行API使用xlsconv。
# Recommended: create virtual environment
# python3 -m venv venv
# . venv/bin/activate
# Install xlsconv
pip install xlsconv
# Use the default models.py template
xls2django my-odk-survey.xls > myapp/models.py
# Use the rest.py template (or admin.py, or serializers.py)
xls2django my-odk-survey.xls rest > myapp/models.py
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源代码分发
构建分发
xlsconv-2.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb77f903254d40fa7fa455a344245447783e20f7ba86c724a5962683b30f0d06 |
|
MD5 | 70b0f5fdea69fbf7f7fb591b657599f0 |
|
BLAKE2b-256 | e5e6da3929f5eda143760dc1c92bfa1bae2e87d28ab180c1329caeccaf3ae086 |
xlsconv-2.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 960059e467a9f592210ea459b27bd005fb37974e01796d50b0c13f106f67b543 |
|
MD5 | 0c782eeeb0b38082c0d7fab65bdef849 |
|
BLAKE2b-256 | d73a1c849fcffc1dc0faa647f1e940afb7e68c4c38de83215c1c5e6bc8704304 |