Есть ли более простой способ проверить, является ли фильтр, по которому я фильтрую, NULL в django?

Мне интересно, есть ли более простой способ игнорировать значения NULL при фильтрации в django. Я имею в виду не NULL значения в базе данных, а скорее потенциальные NULL значения, по которым я фильтрую. Вот мой код на данный момент:

        if data['grade'] is not None:
            posts = posts.filter(grade=data['grade'])
        if data['subject'] != '':
            posts = posts.filter(subject=data['subject'])

Есть ли способ избежать всех пунктов if и написать фильтр в одном операторе? Заранее спасибо!

from django.db.models import Q

MyModel.objects.filter(~Q(grade__isnull=False) & ~Q(subject__exact=''))

edit:

Вы можете взять идею отсюда Django Filter Model by Dictionary

или вы можете сделать копию из своих данных

for i in data.copy():
        if data[i] == "" or data[i] == None:
            data.pop(i)

или

for i in data.copy():
        if not data[i]:
            data.pop(i)

после этого MyModel.objects.filter(**data)

Вернуться на верх