我正在开发一个django应用程序,其中包含一些将用于输入一些癌症组织样本的临床数据的表单(每个表单10-20个字段,主要是CharField
,FloatField
和一些多项选择文本下拉菜单)。Django稀疏数据模型
我的挑战是我需要一个可以显示基于诊断的不同字段的窗体,用于150多种诊断。我可以以编程方式读取诊断列表,每个诊断所需的字段以及相应的字段类型。此外,所有诊断中所有独特字段的集合都很大(远大于任何特定诊断所需字段的数量)。
例如
disease_specific_fields field_type
diagnosis
B-lymphoblastic leukemia/lymphoma NOS EBV-positive Pull down: Yes/No
B-lymphoblastic leukemia/lymphoma with recurrent genetic abnormalities(TCF3-PBX1) EBV-positive Pull down: Yes/No
Monoclonal B lymphocytosis(CLL/SLL spectrum) EBV-positive Pull down: Yes/No
Peripheral T cell lymphoma NOS EBV-positive Pull down: Yes/No
AML with recurrent cytogenetic abnormalities(t(6;9) DEK-NUP214) EBV-positive Pull down: Yes/No
到目前为止,我想到了以下方法:
创建将主要包含稀疏数据,并使用Django表单处理不相关的数据单巨大模型。缺点:存储效率低下,大量代码与表单绑定在一起。
为每个诊断创建一个模型。 CONS:使迁移和维护复杂化,我认为。
- 为每种类型('CharField','FloatField'等)包含几个'通用'字段的所有诊断创建一个小模型,并在窗体/视图中动态显示相应的字段名称。
我在寻找关于如何实现捕获上述数据的模型/模型的任何建设性建议。效率和存储是次要问题,大多数情况下我想要一个清晰直观的解决方案。任何为django量身定制的答案都会特别有用。
谢谢你一个深思熟虑的解释。 JsonField在我的情况下效果很好。 –