Django Модель объекта Automati c Фильтрация - PullRequest
1 голос
/ 21 марта 2020

Я работаю над проектом Django, и я хотел бы выполнить команду, подобную этой: Student.objects.all().filter(name__iexact="Some name")

на расстоянии, что может быть более, ну, податливым, например:

someFunction(Student.objects.all(): QuerySet,'name__iexact',"Some name") -> QuerySet

или:

Student.objects.all().some_advanced_filter(key='name__iexact',value='Some name') -> QuerySet

Спасибо!

1 Ответ

1 голос
/ 21 марта 2020

Вы можете отфильтровать, построив объект Q, например:

from django.db.models import <b>Q</b>

Student.objects.filter(<b>Q(('name__iexact', 'some_name'))</b>)

Таким образом, вы можете сделать some_function с:

from django.db.models import <b>Q</b>

def some_function(qs, key, value):
    return qs.filter(<b>Q((key, value))</b>)

По сути, это то, что происходит когда вы звоните .filter(..). Действительно, он получит *args (Q -объекты) и **kwargs и обернет их в новые Q объекты, которые затем преобразуются в соединительный Q объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...