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.
depot_django/common/fields.py

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.')