Как я могу сделать запрос django на основе ввода функции?

#python #django #postgresql #django-orm

#python #django #postgresql #django-orm

Вопрос:

Я хочу сделать запрос django на основе ввода функции.Я не хочу проверять ввод с помощью if и else в 2 отдельных строках, а затем выполнять запрос следующим образом:

 def customer_number(mall,store=None):
    if store :
        customer = models.Customer.objects.filter(mall=mall,store=store)
    else :
        customer = models.Customer.objects.filter(mall=mall)
    return customer.count
 

Ответ №1:

Вы можете создать поисковый словарь kwarg:

 def customer_number(mall, store=None):
    lookup_kwargs = {'mail': mail}
    if store:
        lookup_kwargs['store'] = store
    return models.Customer.objects.filter(**lookup_kwargs).count()
 

В качестве альтернативы, если вам не нужны какие-либо условные обозначения, вы можете создавать dict и удалять None значения:

 def customer_number(mall, store=None):
    lookup_kwargs = {'mail': mail, 'store': store}
    lookup_kwargs = {k: v for k, v in lookup_kwargs.items() if v is not None}
    return models.Customer.objects.filter(**lookup_kwargs).count()