mirror of https://github.com/django/django.git
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 copy
|
||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
import math
|
|
||||||
import uuid
|
import uuid
|
||||||
import warnings
|
import warnings
|
||||||
from base64 import b64decode, b64encode
|
from base64 import b64decode, b64encode
|
||||||
|
@ -1875,11 +1874,6 @@ class IntegerField(Field):
|
||||||
return None
|
return None
|
||||||
return int(value)
|
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):
|
def get_internal_type(self):
|
||||||
return "IntegerField"
|
return "IntegerField"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import math
|
||||||
import warnings
|
import warnings
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
|
||||||
|
@ -201,6 +202,27 @@ class LessThanOrEqual(BuiltinLookup):
|
||||||
Field.register_lookup(LessThanOrEqual)
|
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):
|
class In(BuiltinLookup):
|
||||||
lookup_name = 'in'
|
lookup_name = 'in'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue