| 1 |
Index: django/db/models/fields/__init__.py |
|---|
| 2 |
=================================================================== |
|---|
| 3 |
--- django/db/models/fields/__init__.py (revision 3608) |
|---|
| 4 |
+++ django/db/models/fields/__init__.py (working copy) |
|---|
| 5 |
@@ -663,6 +663,14 @@ |
|---|
| 6 |
def get_manipulator_field_objs(self): |
|---|
| 7 |
return [forms.IntegerField] |
|---|
| 8 |
|
|---|
| 9 |
+class BigIntegerField(IntegerField): |
|---|
| 10 |
+ def get_manipulator_field_objs(self): |
|---|
| 11 |
+ return [forms.BigIntegerField] |
|---|
| 12 |
+ |
|---|
| 13 |
+class PositiveBigIntegerField(IntegerField): |
|---|
| 14 |
+ def get_manipulator_field_objs(self): |
|---|
| 15 |
+ return [forms.PositiveBigIntegerField] |
|---|
| 16 |
+ |
|---|
| 17 |
class IPAddressField(Field): |
|---|
| 18 |
def __init__(self, *args, **kwargs): |
|---|
| 19 |
kwargs['maxlength'] = 15 |
|---|
| 20 |
Index: django/db/backends/mysql/introspection.py |
|---|
| 21 |
=================================================================== |
|---|
| 22 |
--- django/db/backends/mysql/introspection.py (revision 3608) |
|---|
| 23 |
+++ django/db/backends/mysql/introspection.py (working copy) |
|---|
| 24 |
@@ -82,7 +82,7 @@ |
|---|
| 25 |
FIELD_TYPE.FLOAT: 'FloatField', |
|---|
| 26 |
FIELD_TYPE.INT24: 'IntegerField', |
|---|
| 27 |
FIELD_TYPE.LONG: 'IntegerField', |
|---|
| 28 |
- FIELD_TYPE.LONGLONG: 'IntegerField', |
|---|
| 29 |
+ FIELD_TYPE.LONGLONG: 'BigIntegerField', |
|---|
| 30 |
FIELD_TYPE.SHORT: 'IntegerField', |
|---|
| 31 |
FIELD_TYPE.STRING: 'TextField', |
|---|
| 32 |
FIELD_TYPE.TIMESTAMP: 'DateTimeField', |
|---|
| 33 |
Index: django/db/backends/mysql/creation.py |
|---|
| 34 |
=================================================================== |
|---|
| 35 |
--- django/db/backends/mysql/creation.py (revision 3608) |
|---|
| 36 |
+++ django/db/backends/mysql/creation.py (working copy) |
|---|
| 37 |
@@ -14,12 +14,14 @@ |
|---|
| 38 |
'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)', |
|---|
| 39 |
'ImageField': 'varchar(100)', |
|---|
| 40 |
'IntegerField': 'integer', |
|---|
| 41 |
+ 'BigIntegerField': 'bigint', |
|---|
| 42 |
'IPAddressField': 'char(15)', |
|---|
| 43 |
'ManyToManyField': None, |
|---|
| 44 |
'NullBooleanField': 'bool', |
|---|
| 45 |
'OneToOneField': 'integer', |
|---|
| 46 |
'PhoneNumberField': 'varchar(20)', |
|---|
| 47 |
'PositiveIntegerField': 'integer UNSIGNED', |
|---|
| 48 |
+ 'PositiveBigIntegerField': 'bigint UNSIGNED', |
|---|
| 49 |
'PositiveSmallIntegerField': 'smallint UNSIGNED', |
|---|
| 50 |
'SlugField': 'varchar(%(maxlength)s)', |
|---|
| 51 |
'SmallIntegerField': 'smallint', |
|---|
| 52 |
Index: django/forms/__init__.py |
|---|
| 53 |
=================================================================== |
|---|
| 54 |
--- django/forms/__init__.py (revision 3608) |
|---|
| 55 |
+++ django/forms/__init__.py (working copy) |
|---|
| 56 |
@@ -738,6 +738,20 @@ |
|---|
| 57 |
if not 0 <= int(field_data) <= 32767: |
|---|
| 58 |
raise validators.CriticalValidationError, gettext("Enter a whole number between 0 and 32,767.") |
|---|
| 59 |
|
|---|
| 60 |
+class BigIntegerField(IntegerField): |
|---|
| 61 |
+ def __init__(self, field_name, length=20, maxlength=None, is_required=False, validator_list=None, member_name=None): |
|---|
| 62 |
+ if validator_list is None: validator_list = [] |
|---|
| 63 |
+ validator_list = [self.isInteger] + validator_list |
|---|
| 64 |
+ if member_name is not None: |
|---|
| 65 |
+ self.member_name = member_name |
|---|
| 66 |
+ IntegerField.__init__(self, field_name, length, maxlength, is_required, validator_list) |
|---|
| 67 |
+ |
|---|
| 68 |
+class PositiveBigIntegerField(PositiveIntegerField): |
|---|
| 69 |
+ def __init__(self, field_name, length=20, maxlength=None, is_required=False, validator_list=None): |
|---|
| 70 |
+ if validator_list is None: validator_list = [] |
|---|
| 71 |
+ validator_list = [self.isPositive] + validator_list |
|---|
| 72 |
+ IntegerField.__init__(self, field_name, length, maxlength, is_required, validator_list) |
|---|
| 73 |
+ |
|---|
| 74 |
class FloatField(TextField): |
|---|
| 75 |
def __init__(self, field_name, max_digits, decimal_places, is_required=False, validator_list=None): |
|---|
| 76 |
if validator_list is None: validator_list = [] |
|---|
| 77 |
Index: django/contrib/admin/views/doc.py |
|---|
| 78 |
=================================================================== |
|---|
| 79 |
--- django/contrib/admin/views/doc.py (revision 3608) |
|---|
| 80 |
+++ django/contrib/admin/views/doc.py (working copy) |
|---|
| 81 |
@@ -289,6 +289,7 @@ |
|---|
| 82 |
# If a column type is set to None, it won't be included in the output. |
|---|
| 83 |
DATA_TYPE_MAPPING = { |
|---|
| 84 |
'AutoField' : _('Integer'), |
|---|
| 85 |
+ 'BigIntegerField' : _('Integer'), |
|---|
| 86 |
'BooleanField' : _('Boolean (Either True or False)'), |
|---|
| 87 |
'CharField' : _('String (up to %(maxlength)s)'), |
|---|
| 88 |
'CommaSeparatedIntegerField': _('Comma-separated integers'), |
|---|
| 89 |
@@ -306,6 +307,7 @@ |
|---|
| 90 |
'NullBooleanField' : _('Boolean (Either True, False or None)'), |
|---|
| 91 |
'OneToOneField' : _('Relation to parent model'), |
|---|
| 92 |
'PhoneNumberField' : _('Phone number'), |
|---|
| 93 |
+ 'PositiveBigIntegerField' : _('Integer'), |
|---|
| 94 |
'PositiveIntegerField' : _('Integer'), |
|---|
| 95 |
'PositiveSmallIntegerField' : _('Integer'), |
|---|
| 96 |
'SlugField' : _('String (up to %(maxlength)s)'), |
|---|