Skip to content

Commit ff777b1

Browse files
committed
Set validators
1 parent d6896f0 commit ff777b1

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/django_mysql/models/fields/integer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
from django.core.validators import MaxValueValidator
4+
from django.core.validators import MinValueValidator
35
from django.db.backends.base.base import BaseDatabaseWrapper
46
from django.db.models import PositiveSmallIntegerField
57
from django.db.models import SmallIntegerField
@@ -8,13 +10,15 @@
810

911
class TinyIntegerField(SmallIntegerField):
1012
description = _("Small integer")
13+
default_validators = [MinValueValidator(-128), MaxValueValidator(127)]
1114

1215
def db_type(self, connection: BaseDatabaseWrapper) -> str:
1316
return "tinyint"
1417

1518

1619
class PositiveTinyIntegerField(PositiveSmallIntegerField):
1720
description = _("Positive small integer")
21+
default_validators = [MinValueValidator(0), MaxValueValidator(255)]
1822

1923
def db_type(self, connection: BaseDatabaseWrapper) -> str:
2024
return "tinyint unsigned"

tests/testapp/test_tinyintegerfield.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import pytest
44
from django.core.management import call_command
5+
from django.core.validators import MaxValueValidator
6+
from django.core.validators import MinValueValidator
57
from django.db import connection
68
from django.db.utils import DataError
79
from django.test import TestCase
@@ -79,3 +81,21 @@ def test_adding_field_with_default(self):
7981
)
8082
with connection.cursor() as cursor:
8183
assert table_name not in table_names(cursor)
84+
85+
86+
class TestFormValidation(TestCase):
87+
def test_signed_validators(self):
88+
validators = TinyIntegerModel._meta.get_field("tiny_signed").validators
89+
assert len(validators) == 2
90+
assert isinstance(validators[0], MinValueValidator)
91+
assert validators[0].limit_value == -128
92+
assert isinstance(validators[1], MaxValueValidator)
93+
assert validators[1].limit_value == 127
94+
95+
def test_unsigned_validators(self):
96+
validators = TinyIntegerModel._meta.get_field("tiny_unsigned").validators
97+
assert len(validators) == 2
98+
assert isinstance(validators[0], MinValueValidator)
99+
assert validators[0].limit_value == 0
100+
assert isinstance(validators[1], MaxValueValidator)
101+
assert validators[1].limit_value == 255

0 commit comments

Comments
 (0)