валидатор
def validate_mandatory_fields(value):
if value not in ['System', 'Application', 'Info', 'Warning', 'Critical', 'P1', 'P2', 'P3']:
print("Inside validation error")
raise ValidationError(
_('%(value)s is not provided appropriately, '
'check the values provided for alert_severity, alert_type and alert_priority'),
params={'value': value},
)
<# класс моей модели> Предупреждение класса (models.Model):
ALERT_TYPE_CHOICES = Choices(
('APPLICATION', 'Application'),
('SYSTEM', 'System'),
)
ALERT_SEVERY_CHOICES = Choices(
('INFO', 'Info'),
('WARNING', 'Warning'),
('CRITICAL', 'Critical'),
)
ALERT_PRIORITY_CHOICES = Choices(
('P1', 'P1'),
('P2', 'P2'),
('P3', 'P3'),
)
alert_name = models.CharField(max_length=20)
alert_type = models.CharField(max_length=20, choices=ALERT_TYPE_CHOICES)
alert_source = models.CharField(max_length=20)
alert_severity = models.CharField(choices=ALERT_SEVERY_CHOICES, max_length=10,
validators=[validate_mandatory_fields])
alert_priority = models.CharField(choices=ALERT_PRIORITY_CHOICES, max_length=5,
validators=[validate_mandatory_fields])
timestamp = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.alert_name
# storing data
def write_alert_data(data):
data = data.decode('utf-8')
data = eval(data)
dt = datetime.now()
utc_time = dt.replace(tzinfo=timezone.utc)
utc_timestamp = utc_time.timestamp()
print(data)
entry = Alert(utc_timestamp, **data)
entry.save()
return True
Если я не отправляю никаких данных в одно из полей с «выбором» это не вызывает исключения. Что-то я скучаю, но не уверен, что.