Я хочу фильтровать модель, но фильтров много и все они не требуются django?

В моем проекте я хочу построить систему фильтрации и фильтр не по одному полю, а примерно по 6 полям, но каждое поле не является обязательным. но в бэкенде я должен использовать много запросов. например, если приходят 3 поля:

field1 = form.field1
field2 = form.field2
field3 = form.field3
field3 = form.field4
field4 = form.field5
field5 = form.field6
if field1 is None:
   filter_by_other_field

но при использовании этого метода будет много запросов. поэтому не могли бы вы помочь мне в этом случае, я хочу использовать меньше кода. Спасибо

Он не должен делать много запросов, потому что набор запросов лениво оценивается, поэтому он делает фактический запрос только тогда, когда вы его используете...

Так вы можете сделать

qs = myobj.objects.all()
if field1: 
   qs = qs.filter(field1=field1)

Альтернативно используйте Q-объекты

qs = Q(field1="val1")
if field2:
   qs |= Q(field2=field2)

myset = mymodel.objects.filter(qs)

etc.

Только когда вы попытаетесь сделать что-то с набором queryset, например, взять первый объект с помощью среза, он будет оценен.

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