Django视图:计算[]中包含的模型中的数据

2024-05-14 17:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django1.8工作。在

Diagnosis中名为diagnosis_option的列包含以下内容:

[u'b-thalassaemia syndromes']
[u'b-thalassaemia syndromes', u'Sickle cell syndromes']
[u'b-thalassaemia syndromes']
[u'Sickle cell syndromes']
[u'Red cell enzyme disorders']

我正在使用views.py中的下面的代码,但是我没有得到任何结果。如何计算包含字符串b-thalassaemia syndromes的所有字段?在

^{pr2}$

Tags: 字符串代码pycellredviewsoptiondiagnosis
1条回答
网友
1楼 · 发布于 2024-05-14 17:04:28

临时固定

不幸的是,您有一个设计糟糕的数据库,获取计数的方法是使用此查询。在

total_patients_beta = Diagnosis.objects.filter(
  diagnosis_option__contains='b-thalassaemia syndromes').count()

这将导致类似“%b-thalasamia%”查询,该查询无法在大多数数据库上使用索引。在

真正的修复

你需要规范化你的数据库。在数据库列中存储逗号分隔的值几乎永远不是一个好主意。尽管一些数据库(最著名的postgresql)支持数组数据类型,但这些数据类型并不是为搜索而设计的。在

Tip: Arrays are not sets; searching for specific array elements can be a sign of database misdesign. Consider using a separate table with a row for each item that would be an array element. This will be easier to search, and is likely to scale better for a large number of elements.

来源:http://www.postgresql.org/docs/9.1/static/arrays.html

您可能需要一个带有外键或多对多关系的模型辅助诊断选项。在

相关问题 更多 >

    热门问题