diff options
| author | Jonatas CD <jonatas.cd@gmail.com> | 2016-11-15 12:54:45 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-11-17 12:39:35 -0500 |
| commit | b28c6ca7631e13ea29490bf51a367ab10198c74c (patch) | |
| tree | 58abe6c8a184469573c717f46717440dfe7b452a /docs/ref | |
| parent | 721f0ca85c68929354b3ea20cdc61cb671652487 (diff) | |
Fixed #27482 -- Doc'd an example of Case() in QuerySet.filter().
Diffstat (limited to 'docs/ref')
| -rw-r--r-- | docs/ref/models/conditional-expressions.txt | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/docs/ref/models/conditional-expressions.txt b/docs/ref/models/conditional-expressions.txt index da2b4618f3..4331d1185e 100644 --- a/docs/ref/models/conditional-expressions.txt +++ b/docs/ref/models/conditional-expressions.txt @@ -141,6 +141,20 @@ the ``Client`` has been with us, we could do so using lookups:: both Jane Doe and Jack Black. This works just like an :keyword:`if` ... :keyword:`elif` ... :keyword:`else` statement in ``Python``. +``Case()`` also works in a ``filter()`` clause. For example, to find gold +clients that registered more than a month ago and platinum clients that +registered more than a year ago:: + + >>> a_month_ago = date.today() - timedelta(days=30) + >>> a_year_ago = date.today() - timedelta(days=365) + >>> Client.objects.filter( + ... registered_on__lte=Case( + ... When(account_type=Client.GOLD, then=a_month_ago), + ... When(account_type=Client.PLATINUM, then=a_year_ago), + ... ), + ... ).values_list('name', 'account_type') + [('Jack Black', 'P')] + Advanced queries ================ |
