Ticket #399: bigint-patch-2009-10-26.diff

File bigint-patch-2009-10-26.diff, 7.6 KB (added by permon, 5 years ago)

updated to trunk

  • django/db/models/fields/__init__.py

     
    714714        defaults.update(kwargs)
    715715        return super(IntegerField, self).formfield(**defaults)
    716716
     717class BigIntegerField(IntegerField):
     718    MAX_BIGINT = 9223372036854775807
     719    empty_strings_allowed = False
     720    def get_internal_type(self):
     721        return "BigIntegerField"
     722
     723    def get_db_prep_save(self, value):
     724        value = long(value)
     725        if value > self.MAX_BIGINT or value < -self.MAX_BIGINT - 1:
     726            raise ValueError("Value is to small/large to fit this field")
     727        return super(BigIntegerField, self).get_db_prep_save(value)
     728
     729
    717730class IPAddressField(Field):
    718731    empty_strings_allowed = False
    719732    def __init__(self, *args, **kwargs):
  • django/db/backends/postgresql/introspection.py

     
    44    # Maps type codes to Django Field types.
    55    data_types_reverse = {
    66        16: 'BooleanField',
     7        20: 'BigIntegerField',
    78        21: 'SmallIntegerField',
    89        23: 'IntegerField',
    910        25: 'TextField',
  • django/db/backends/postgresql/creation.py

     
    1818        'FilePathField':     'varchar(%(max_length)s)',
    1919        'FloatField':        'double precision',
    2020        'IntegerField':      'integer',
     21        'BigIntegerField':   'bigint',
    2122        'IPAddressField':    'inet',
    2223        'NullBooleanField':  'boolean',
    2324        'OneToOneField':     'integer',
  • django/db/backends/sqlite3/introspection.py

     
    1616        'smallinteger': 'SmallIntegerField',
    1717        'int': 'IntegerField',
    1818        'integer': 'IntegerField',
     19        'bigint': 'BigIntegerField',
    1920        'integer unsigned': 'PositiveIntegerField',
    2021        'decimal': 'DecimalField',
    2122        'real': 'FloatField',
  • django/db/backends/sqlite3/creation.py

     
    1919        'FilePathField':                'varchar(%(max_length)s)',
    2020        'FloatField':                   'real',
    2121        'IntegerField':                 'integer',
     22        'IntegerField':                 'bigint',
    2223        'IPAddressField':               'char(15)',
    2324        'NullBooleanField':             'bool',
    2425        'OneToOneField':                'integer',
  • django/db/backends/mysql/introspection.py

     
    1717        FIELD_TYPE.FLOAT: 'FloatField',
    1818        FIELD_TYPE.INT24: 'IntegerField',
    1919        FIELD_TYPE.LONG: 'IntegerField',
    20         FIELD_TYPE.LONGLONG: 'IntegerField',
     20        FIELD_TYPE.LONGLONG: 'BigIntegerField',
    2121        FIELD_TYPE.SHORT: 'IntegerField',
    2222        FIELD_TYPE.STRING: 'CharField',
    2323        FIELD_TYPE.TIMESTAMP: 'DateTimeField',
  • django/db/backends/mysql/creation.py

     
    1818        'FilePathField':     'varchar(%(max_length)s)',
    1919        'FloatField':        'double precision',
    2020        'IntegerField':      'integer',
     21        'BigIntegerField':   'bigint',
    2122        'IPAddressField':    'char(15)',
    2223        'NullBooleanField':  'bool',
    2324        'OneToOneField':     'integer',
     
    6364                field.rel.to._meta.db_table, field.rel.to._meta.pk.column)
    6465            ]
    6566        return table_output, deferred
    66        
    67  No newline at end of file
     67       
  • django/db/backends/oracle/creation.py

     
    2727        'FilePathField':                'NVARCHAR2(%(max_length)s)',
    2828        'FloatField':                   'DOUBLE PRECISION',
    2929        'IntegerField':                 'NUMBER(11)',
     30        'BigIntegerField':              'NUMBER(19)',
    3031        'IPAddressField':               'VARCHAR2(15)',
    3132        'NullBooleanField':             'NUMBER(1) CHECK ((%(qn_column)s IN (0,1)) OR (%(qn_column)s IS NULL))',
    3233        'OneToOneField':                'NUMBER(11)',
  • django/contrib/comments/templates/comments/preview.html

     
    11{% extends "comments/base.html" %}
    22{% load i18n %}
     3{%sd %}
    34
    45{% block title %}{% trans "Preview your comment" %}{% endblock %}
    56
  • django/contrib/admin/options.py

     
    4040        'form_class': forms.SplitDateTimeField,
    4141        'widget': widgets.AdminSplitDateTime
    4242    },
    43     models.DateField:    {'widget': widgets.AdminDateWidget},
    44     models.TimeField:    {'widget': widgets.AdminTimeWidget},
    45     models.TextField:    {'widget': widgets.AdminTextareaWidget},
    46     models.URLField:     {'widget': widgets.AdminURLFieldWidget},
    47     models.IntegerField: {'widget': widgets.AdminIntegerFieldWidget},
    48     models.CharField:    {'widget': widgets.AdminTextInputWidget},
    49     models.ImageField:   {'widget': widgets.AdminFileWidget},
    50     models.FileField:    {'widget': widgets.AdminFileWidget},
     43    models.DateField:       {'widget': widgets.AdminDateWidget},
     44    models.TimeField:       {'widget': widgets.AdminTimeWidget},
     45    models.TextField:       {'widget': widgets.AdminTextareaWidget},
     46    models.URLField:        {'widget': widgets.AdminURLFieldWidget},
     47    models.IntegerField:    {'widget': widgets.AdminIntegerFieldWidget},
     48    models.BigIntegerField: {'widget': widgets.AdminIntegerFieldWidget},
     49    models.CharField:       {'widget': widgets.AdminTextInputWidget},
     50    models.ImageField:      {'widget': widgets.AdminFileWidget},
     51    models.FileField:       {'widget': widgets.AdminFileWidget},
    5152}
    5253
    5354
  • docs/ref/models/fields.txt

     
    641641An integer. The admin represents this as an ``<input type="text">`` (a
    642642single-line input).
    643643
     644``bigintegerfield``
     645~~~~~~~~~~~~~~~~
     646
     647.. class:: BigIntegerField([**options])
     648
     649A big integer. The admin represents this as an ``<input type="text">``
     650(a single-line input).
     651
     652a 64 bit type like an ``integerfield``, except that it fits numbers from
     653-9223372036854775808 to 9223372036854775807
     654 
     655
    644656``IPAddressField``
    645657------------------
    646658
Back to Top