Существует два способа:
обновлено
Если вы не используете формы, тогда вы можетеперезаписать метод save () или записать код в сигнале предварительного сохранения:
pre_save.connect(yourModel_pre_save, sender = yourModel )
def yourModel_pre_save(sender, instance, **kwargs):
if instance.some_value > some_other_value:
raise ValidationError('Value to high')
не забудьте включить метод save () в предложение try
:
m = yourModel.objects.get( pk = 1 )
try:
m.save()
except ValidationError, e:
import itertools
errors = list( itertools.chain( *e.message_dict.values() ) )
ЕслиВам не нравятся сигналы, затем перезаписать метод сохранения:
class yourModel(model.Model):
description=models.CharField()
some_value=models.IntegerField()
...
def save(self, *args, **kwargs):
if self.some_value > some_other_value:
raise ValidationError('Value to high')
super(yourModel, self).save(*args, **kwargs)