跳转到主要内容

将ODK风格的XLSForms转换为Django模型或与wq(https://wq.io/)一起使用的工具

项目描述

xlsform-converter (xlsconv)

xlsform-converter可以将通过XLSForm标准定义的调查转换为Django模型和配置。这使得可以重用Open Data Kit生态系统提供的强大的表单构建工具,同时利用Django对关系数据库(如PostgreSQL)的强大支持。

xlsform-converter旨在通过wq框架促进离线数据收集应用的快速开发。最终目标是提供与ODKKoboToolbox(等等)提供的表单编写工具完全兼容。请注意,这并不意味着与XForm完全兼容:wq(wq.appwq.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约束)。

Latest PyPI Release Release Notes License GitHub Stars GitHub Forks GitHub Issues

Tests Python Support

包含的模板

xlsform-converter使用AST和模板从给定的XLSForm(例如,此文件)生成以下Django/wq项目文件。

Django应用

用法

如果您正在使用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 (20.9 kB 查看哈希值

上传时间 源代码

构建分发

xlsconv-2.0.0-py3-none-any.whl (10.4 kB 查看哈希值

上传时间 Python 3

由以下支持