Skip to content

Commit 71e83a0

Browse files
committed
Update fields that use "int" db_type to "long"
1 parent 66b2eb0 commit 71e83a0

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

django_mongodb_backend/base.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ def __exit__(self, exception_type, exception_value, exception_traceback):
3434

3535
class DatabaseWrapper(BaseDatabaseWrapper):
3636
data_types = {
37-
"AutoField": "int",
38-
"BigAutoField": "long",
37+
"AutoField": "long", # Not supported
38+
"BigAutoField": "long", # Not supported
3939
"BinaryField": "binData",
4040
"BooleanField": "bool",
4141
"CharField": "string",
@@ -46,17 +46,16 @@ class DatabaseWrapper(BaseDatabaseWrapper):
4646
"FileField": "string",
4747
"FilePathField": "string",
4848
"FloatField": "double",
49-
"IntegerField": "int",
49+
"IntegerField": "long",
5050
"BigIntegerField": "long",
5151
"GenericIPAddressField": "string",
5252
"JSONField": "object",
53-
"OneToOneField": "int",
54-
"PositiveBigIntegerField": "int",
53+
"PositiveBigIntegerField": "long",
5554
"PositiveIntegerField": "long",
56-
"PositiveSmallIntegerField": "int",
55+
"PositiveSmallIntegerField": "long",
5756
"SlugField": "string",
58-
"SmallAutoField": "int",
59-
"SmallIntegerField": "int",
57+
"SmallAutoField": "long", # Not supported
58+
"SmallIntegerField": "long",
6059
"TextField": "string",
6160
"TimeField": "date",
6261
"UUIDField": "string",

tests/model_fields_/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
from django_mongodb_backend.models import EmbeddedModel
1414

1515

16+
class Integers(models.Model):
17+
small = models.SmallIntegerField(unique=True, null=True)
18+
normal = models.IntegerField(unique=True, null=True)
19+
big = models.BigIntegerField(unique=True, null=True)
20+
21+
1622
# ObjectIdField
1723
class ObjectIdModel(models.Model):
1824
field = ObjectIdField()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from django.db import IntegrityError
2+
from django.test import TestCase
3+
4+
from .models import Integers
5+
6+
7+
class BasicTests(TestCase):
8+
def test_smallintegerfield_large_unique(self):
9+
"""Duplicate SmallIntegerField(unique=True) values are prohibited."""
10+
Integers.objects.create(small=2**31)
11+
with self.assertRaises(IntegrityError):
12+
Integers.objects.create(small=2**31)
13+
14+
def test_integerfield_large_unique(self):
15+
"""Duplicate IntegerField(unique=True) values are prohibited."""
16+
Integers.objects.create(normal=2**31)
17+
with self.assertRaises(IntegrityError):
18+
Integers.objects.create(integer=2**31)
19+
20+
def test_bigintegerfield_large_unique(self):
21+
"""Duplicate BigIntegerField(unique=True) values are prohibited."""
22+
Integers.objects.create(big=2**31)
23+
with self.assertRaises(IntegrityError):
24+
Integers.objects.create(big=2**31)

0 commit comments

Comments
 (0)