Вы можете поместить свой код проверки, например, в метод save
.
from django.core.exceptions import ValidationError
class YourModel(models.Model):
# fields
def save(self, *args, **kwargs):
if self.given_field == 'known_value':
raise ValidationError(u"You can't do that!")
super(YourModel, self).save(*args, **kwargs)
Единственное, что здесь происходит, это то, что 1) вы не получите эту проверку при использовании массового обновления и 2) этопроверка прервется в admin
(2) решается, если вы перенесете проверку в метод чистой модели.