Прежде всего, если regno
должен хранить цифры и символы, не используйте FloatField
, например, CharField
Если вы хотите избежать проблем с чувствительностью к регистру, вы можете, например,При сохранении объекта решите всегда сохранять значения в нижнем регистре следующим образом:
def save(self, *args, **kwargs):
self.regno = self.regno.lower()
super(Show, self).save(*args, **kwargs)
Если вам нужно сохранить регистр, альтернативным вариантом будет дублирование строчного содержимого во вторичном CharField
. Который может быть автоматизирован в методе сохранения.
Если вы попытаетесь вставить повторяющееся значение, django выдаст IntegrityError
, который должен быть обработан.
class MyModel(models.Model):
mytextfield = models.CharField()
lowcase_textfield = models.CharField(unique=True)
def save(self, *args, **kwargs):
self.lowcase_textfield = self.mytextfield.lower()
try:
super(MyModel, self).save(*args, **kwargs)
except IntegrityError as e:
# INSERT YOUR EXCEPTION HANDLING HERE
pass