You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
932 B
Python
30 lines
932 B
Python
from django.core.exceptions import ValidationError
|
|
from django.db import models
|
|
|
|
|
|
class UpperCaseCharField(models.CharField):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def get_prep_value(self, value):
|
|
value = super().get_prep_value(value)
|
|
if value is not None:
|
|
return value.upper()
|
|
return value
|
|
|
|
|
|
class ContainerNumberField(UpperCaseCharField):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def get_prep_value(self, value):
|
|
value = super().get_prep_value(value)
|
|
if value is not None:
|
|
return value.upper()
|
|
return value
|
|
|
|
def validate(self, value, model_instance):
|
|
super().validate(value, model_instance)
|
|
if value and len(value) != 11:
|
|
raise ValidationError('Container number must be exactly 11 characters long.')
|