Refs #22936 -- Moved IntegerField.get_prep_lookup() logic to lookups.
This commit is contained in:
parent
461f74ab19
commit
1c30a6473d
|
@ -5,7 +5,6 @@ import collections
|
|||
import copy
|
||||
import datetime
|
||||
import decimal
|
||||
import math
|
||||
import uuid
|
||||
import warnings
|
||||
from base64 import b64decode, b64encode
|
||||
|
@ -1875,11 +1874,6 @@ class IntegerField(Field):
|
|||
return None
|
||||
return int(value)
|
||||
|
||||
def get_prep_lookup(self, lookup_type, value):
|
||||
if lookup_type in ('gte', 'lt') and isinstance(value, float):
|
||||
value = math.ceil(value)
|
||||
return super(IntegerField, self).get_prep_lookup(lookup_type, value)
|
||||
|
||||
def get_internal_type(self):
|
||||
return "IntegerField"
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import math
|
||||
import warnings
|
||||
from copy import copy
|
||||
|
||||
|
@ -201,6 +202,27 @@ class LessThanOrEqual(BuiltinLookup):
|
|||
Field.register_lookup(LessThanOrEqual)
|
||||
|
||||
|
||||
class IntegerFieldFloatRounding(object):
|
||||
"""
|
||||
Allow floats to work as query values for IntegerField. Without this, the
|
||||
decimal portion of the float would always be discarded.
|
||||
"""
|
||||
def get_prep_lookup(self):
|
||||
if isinstance(self.rhs, float):
|
||||
self.rhs = math.ceil(self.rhs)
|
||||
return super(IntegerFieldFloatRounding, self).get_prep_lookup()
|
||||
|
||||
|
||||
class IntegerGreaterThanOrEqual(IntegerFieldFloatRounding, GreaterThanOrEqual):
|
||||
pass
|
||||
IntegerField.register_lookup(IntegerGreaterThanOrEqual)
|
||||
|
||||
|
||||
class IntegerLessThan(IntegerFieldFloatRounding, LessThan):
|
||||
pass
|
||||
IntegerField.register_lookup(IntegerLessThan)
|
||||
|
||||
|
||||
class In(BuiltinLookup):
|
||||
lookup_name = 'in'
|
||||
|
||||
|
|
Loading…
Reference in New Issue