2016-03-12 3 views
0

я играл с моим тестовым проектомDjango модели множественного ошибка

У меня есть этот чистый метод в моей модели

class SomeModel(models.Model): 
    f1 = models.IntegerField() 
    f2 = models.IntegerField() 

    def clean(self): 
     if self.f1 > self.f2: 
      raise ValidationError({'f1': ['Should be greater than f1',]}) 
     if self.f2 == 100: 
      raise ValidationError({'f2': ['That's too much',]}) 

Я не знаю, как поднять обе ошибки и шоу это на странице администратора, потому что, даже если два if - True, отображается только первая ошибка if (очевидно), как я могу показать обе ошибки?

ответ

0

Вы можете построить dict ошибок и поднять ValidationError, когда вы сделали (если необходимо):

class SomeModel(models.Model): 
    f1 = models.IntegerField() 
    f2 = models.IntegerField() 

    def clean(self): 
     error_dict = {} 
     if self.f1 > self.f2: 
      error_dict['f1'] = ValidationError("Should be greater than f1") # this should probably belong to f2 as well 
     if self.f2 == 100: 
      error_dict['f2'] = ValidationError("That's too much") 
     if error_dict: 
      raise ValidationError(error_dict) 
+0

[Ссылка на документы] (https://docs.djangoproject.com/en/1.9 /ref/models/instances/#django.db.models.Model.clean), который рекомендует это: «Если вы обнаруживаете ошибки в нескольких полях во время Model.clean(), вы также можете передавать имена полей сопоставления словарям на ошибки» (Обратите внимание, что значения dict являются ошибками проверки) – Sayse

Смежные вопросы