Index: django/oldforms/__init__.py
===================================================================
--- django/oldforms/__init__.py	(revision 6247)
+++ django/oldforms/__init__.py	(working copy)
@@ -763,6 +763,14 @@
         if not 0 <= int(field_data) <= 32767:
             raise validators.CriticalValidationError, ugettext("Enter a whole number between 0 and 32,767.")
 
+class BigIntegerField(IntegerField):
+    def __init__(self, field_name, length=20, maxlength=None, is_required=False, validator_list=None, member_name=None):
+        if validator_list is None: validator_list = []
+        validator_list = [self.isInteger] + validator_list
+        if member_name is not None:
+            self.member_name = member_name
+        IntegerField.__init__(self, field_name, length, maxlength, is_required, validator_list)
+
 class FloatField(TextField):
     def __init__(self, field_name, is_required=False, validator_list=None):
         if validator_list is None: validator_list = []
Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py	(revision 6247)
+++ django/db/models/fields/__init__.py	(working copy)
@@ -868,6 +868,18 @@
         defaults.update(kwargs)
         return super(IntegerField, self).formfield(**defaults)
 
+class BigIntegerField(IntegerField):
+    MAX_BIGINT = 9223372036854775807
+    empty_strings_allowed = False
+    def get_manipulator_field_objs(self):
+        return [oldforms.BigIntegerField]
+
+    def get_db_prep_save(self, value):
+        if value > self.MAX_BIGINT or value < -self.MAX_BIGINT:
+            raise ValueError("Value is to small/large to fit this field")
+        return super(BigIntegerField, self).get_db_prep_save(value)
+
+
 class IPAddressField(Field):
     empty_strings_allowed = False
     def __init__(self, *args, **kwargs):
Index: django/db/backends/ado_mssql/creation.py
===================================================================
--- django/db/backends/ado_mssql/creation.py	(revision 6247)
+++ django/db/backends/ado_mssql/creation.py	(working copy)
@@ -11,6 +11,7 @@
     'FloatField':        'double precision',
     'ImageField':        'varchar(100)',
     'IntegerField':      'int',
+    'BigIntegerField':   'bigint',
     'IPAddressField':    'char(15)',
     'NullBooleanField':  'bit',
     'OneToOneField':     'int',
Index: django/db/backends/postgresql/introspection.py
===================================================================
--- django/db/backends/postgresql/introspection.py	(revision 6247)
+++ django/db/backends/postgresql/introspection.py	(working copy)
@@ -71,6 +71,7 @@
 # Maps type codes to Django Field types.
 DATA_TYPES_REVERSE = {
     16: 'BooleanField',
+    20: 'BigIntegerField',
     21: 'SmallIntegerField',
     23: 'IntegerField',
     25: 'TextField',
Index: django/db/backends/postgresql/creation.py
===================================================================
--- django/db/backends/postgresql/creation.py	(revision 6247)
+++ django/db/backends/postgresql/creation.py	(working copy)
@@ -15,6 +15,7 @@
     'FloatField':        'double precision',
     'ImageField':        'varchar(100)',
     'IntegerField':      'integer',
+    'BigIntegerField':   'bigint',
     'IPAddressField':    'inet',
     'NullBooleanField':  'boolean',
     'OneToOneField':     'integer',
Index: django/db/backends/sqlite3/introspection.py
===================================================================
--- django/db/backends/sqlite3/introspection.py	(revision 6247)
+++ django/db/backends/sqlite3/introspection.py	(working copy)
@@ -64,6 +64,7 @@
     'smallinteger': 'SmallIntegerField',
     'int': 'IntegerField',
     'integer': 'IntegerField',
+    'bigint': 'BigIntegerField',
     'text': 'TextField',
     'char': 'CharField',
     'date': 'DateField',
Index: django/db/backends/sqlite3/creation.py
===================================================================
--- django/db/backends/sqlite3/creation.py	(revision 6247)
+++ django/db/backends/sqlite3/creation.py	(working copy)
@@ -14,6 +14,7 @@
     'FloatField':                   'real',
     'ImageField':                   'varchar(100)',
     'IntegerField':                 'integer',
+    'BigIntegerField':              'bigint',
     'IPAddressField':               'char(15)',
     'NullBooleanField':             'bool',
     'OneToOneField':                'integer',
Index: django/db/backends/mysql/introspection.py
===================================================================
--- django/db/backends/mysql/introspection.py	(revision 6247)
+++ django/db/backends/mysql/introspection.py	(working copy)
@@ -84,7 +84,7 @@
     FIELD_TYPE.FLOAT: 'FloatField',
     FIELD_TYPE.INT24: 'IntegerField',
     FIELD_TYPE.LONG: 'IntegerField',
-    FIELD_TYPE.LONGLONG: 'IntegerField',
+    FIELD_TYPE.LONGLONG: 'BigIntegerField',
     FIELD_TYPE.SHORT: 'IntegerField',
     FIELD_TYPE.STRING: 'CharField',
     FIELD_TYPE.TIMESTAMP: 'DateTimeField',
Index: django/db/backends/mysql/creation.py
===================================================================
--- django/db/backends/mysql/creation.py	(revision 6247)
+++ django/db/backends/mysql/creation.py	(working copy)
@@ -15,6 +15,7 @@
     'FloatField':        'double precision',
     'ImageField':        'varchar(100)',
     'IntegerField':      'integer',
+    'BigIntegerField':   'bigint',
     'IPAddressField':    'char(15)',
     'NullBooleanField':  'bool',
     'OneToOneField':     'integer',
Index: django/db/backends/oracle/creation.py
===================================================================
--- django/db/backends/oracle/creation.py	(revision 6247)
+++ django/db/backends/oracle/creation.py	(working copy)
@@ -18,6 +18,7 @@
     'FloatField':                   'DOUBLE PRECISION',
     'ImageField':                   'NVARCHAR2(100)',
     'IntegerField':                 'NUMBER(11)',
+    'BigIntegerField':              'NUMBER(19)',
     'IPAddressField':               'VARCHAR2(15)',
     'NullBooleanField':             'NUMBER(1) CHECK ((%(column)s IN (0,1)) OR (%(column)s IS NULL))',
     'OneToOneField':                'NUMBER(11)',
Index: django/db/backends/postgresql_psycopg2/introspection.py
===================================================================
--- django/db/backends/postgresql_psycopg2/introspection.py	(revision 6247)
+++ django/db/backends/postgresql_psycopg2/introspection.py	(working copy)
@@ -68,6 +68,7 @@
 # Maps type codes to Django Field types.
 DATA_TYPES_REVERSE = {
     16: 'BooleanField',
+    20: 'BigIntegerField',
     21: 'SmallIntegerField',
     23: 'IntegerField',
     25: 'TextField',
Index: django/contrib/admin/views/doc.py
===================================================================
--- django/contrib/admin/views/doc.py	(revision 6247)
+++ django/contrib/admin/views/doc.py	(working copy)
@@ -303,6 +303,7 @@
     'ForeignKey'                : _('Integer'),
     'ImageField'                : _('File path'),
     'IntegerField'              : _('Integer'),
+    'BigIntegerField'           : _('Integer'),
     'IPAddressField'            : _('IP address'),
     'ManyToManyField'           : '',
     'NullBooleanField'          : _('Boolean (Either True, False or None)'),
Index: tests/modeltests/field_types/__init__.py
===================================================================
Index: tests/modeltests/field_types/models.py
===================================================================
--- tests/modeltests/field_types/models.py	(revision 0)
+++ tests/modeltests/field_types/models.py	(revision 0)
@@ -0,0 +1,51 @@
+"""
+Tests for field type boundaries
+"""
+
+from django.db import models
+
+class BigInt(models.Model):
+    value = models.BigIntegerField()
+
+    def __unicode__(self):
+        return unicode(self.value)
+
+__test__ = {'API_TESTS': """
+>>> BigInt.objects.all()
+[]
+
+>>> t = BigInt(value = 0)
+>>> t.save()
+>>> t.value
+0
+
+>>> BigInt.objects.all()
+[<BigInt: 0>]
+
+>>> t = BigInt(value = -9223372036854775808)
+>>> t.value
+-9223372036854775808
+
+>>> BigInt.objects.all().delete()
+>>> t.save()
+>>> BigInt.objects.all()[0]
+<BigInt: -9223372036854775808>
+
+>>> BigInt(value = -9223372036854775809111111111111111111).save()
+Traceback (most recent call last):
+...
+ValueError: Value is so small/large to fit to field
+
+>>> BigInt(value = 9223372036854775808).save()
+Traceback (most recent call last):
+...
+ValueError: Value is so small/large to fit to field
+
+>>> BigInt(value = 9223372036854775807).save()
+>>> BigInt.objects.all()
+[<BigInt: -9223372036854775808>, <BigInt: 9223372036854775807>]
+"""}
+
+def test():
+    import doctest
+    doctest.testmod()
Index: docs/model-api.txt
===================================================================
--- docs/model-api.txt	(revision 6247)
+++ docs/model-api.txt	(working copy)
@@ -126,6 +126,16 @@
 automatically be added to your model if you don't specify otherwise. See
 `Automatic primary key fields`_.
 
+``BigIntegerField``
+~~~~~~~~~~~~~~~~
+
+A big integer.
+
+The admin represents this as an ``<input type="text">`` (a single-line input).
+
+A 64 bit type like an ``IntegerField``, except that it fits numbers from
+-9223372036854775808 to 9223372036854775807
+
 ``BooleanField``
 ~~~~~~~~~~~~~~~~
 
