jprmachado
jprmachado

Reputation: 27

Django filter empty fields

Currently I am filtering empty fields in all entries of the queryset like this:

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

It works but not sure if it is an appropriate solution....

Does anyone know how to filter empty values in all the queryset? The table have more than 30 fields, so depending on the study ID some querysets may contain the field1 all empty, other study ID may contain all the field2 empty.

Does the Django ORM provide an easy an clean solution to do this?

Thanks in advance

Upvotes: 1

Views: 1254

Answers (1)

CYW
CYW

Reputation: 135

To check if some value in a QuerySet is empty, say the values name is "title".

This will exclude all empty fields

DataValue.objects.filter(study_id=study.id).exclude(title__exact='')

If you only want the empty fields, just filter it

DataValue.objects.filter(study_id=study.id, title__exact='')

Hope it helped.

Upvotes: 3

Related Questions