mirror of
https://github.com/django/django.git
synced 2025-09-26 20:19:16 +00:00
Fixes #2271 -- Added code to imply !__exact on any query argument that doesn't finish with a known query term.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3248 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4a324ba7ac
commit
cd7b54aab0
2 changed files with 23 additions and 2 deletions
|
@ -10,8 +10,20 @@ import re
|
|||
if not hasattr(__builtins__, 'set'):
|
||||
from sets import Set as set
|
||||
|
||||
# The string constant used to separate query parts
|
||||
LOOKUP_SEPARATOR = '__'
|
||||
|
||||
# The list of valid query types
|
||||
QUERY_TERMS=(
|
||||
'exact', 'iexact',
|
||||
'contains', 'icontains',
|
||||
'gt', 'gte', 'lt', 'lte',
|
||||
'in',
|
||||
'startswith', 'istartswith', 'endswith', 'iendswith',
|
||||
'range', 'year', 'month', 'day',
|
||||
'isnull'
|
||||
)
|
||||
|
||||
# Size of each "chunk" for get_iterator calls.
|
||||
# Larger values are slightly faster at the expense of more storage space.
|
||||
GET_ITERATOR_CHUNK_SIZE = 100
|
||||
|
@ -710,12 +722,13 @@ def parse_lookup(kwarg_items, opts):
|
|||
# if we find "pk", make the clause "exact', and insert
|
||||
# a dummy name of None, which we will replace when
|
||||
# we know which table column to grab as the primary key.
|
||||
# 2) If there is only one part, assume it to be an __exact
|
||||
# 2) If there is only one part, or the last part is not a query
|
||||
# term, assume that the query is an __exact
|
||||
clause = path.pop()
|
||||
if clause == 'pk':
|
||||
clause = 'exact'
|
||||
path.append(None)
|
||||
elif len(path) == 0:
|
||||
elif len(path) == 0 or clause not in QUERY_TERMS:
|
||||
path.append(clause)
|
||||
clause = 'exact'
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue