【发布时间】:2021-06-19 14:24:39
【问题描述】:
目前我正在过滤查询集中所有条目中的空字段,如下所示:
data_qs = DataValue.objects.filter(study_id=study.id) #queryset
opts = DataValue._meta # get meta info from DataValue model
field_names = list([field.name for field in opts.fields]) # DataValue fields in a list
field_not_empty = list() # list of empty fields
for field in field_names:
for entry in data_qs.values(field):
if entry.get(field) is not None:
field_not_empty.append(field)
break
它可以工作,但不确定它是否是一个合适的解决方案......
有谁知道如何过滤所有查询集中的空值?该表有 30 多个字段,因此根据研究 ID,某些查询集可能包含字段 1 全部为空,其他研究 ID 可能包含字段 2 全部为空。
Django ORM 是否提供了一个简单干净的解决方案来做到这一点?
提前致谢
【问题讨论】:
-
你能解释清楚一点吗?你主要想做什么,过滤有空字段的记录??
-
当然。不,如果字段包含查询集的任何条目中的值,则应维护。如果所有条目对该字段都有一个空值,那么我想从查询集中排除该字段。因此,当我将该查询集导出为 CSV 时,我可以保存几列,因为这将是一个空列。
标签: django orm django-queryset