2013-08-20 6 views
1

Я хочу отобразить сообщение об ошибке, если поле пусто в администрировании Django. На данный момент я знаю, как запустить ValidationError на ранней стадии страницы, но мне нужно получить сообщение прямо над пустым полем. Как это может быть сделано?Как отобразить сообщение об ошибке в поле

еще не удалось найти ответ.

class Article(models.Model): 
    ... 
    title_ru = models.CharField(max_length=255, blank=True) 
    ... 

class ArticleAdmin(admin.ModelAdmin): 

    class form(forms.ModelForm): 

     class Meta: 
     model = models.Article 

    def clean(self): 
     cleaned_data = super(forms.ModelForm, self).clean() 
     title_ru = cleaned_data['title_ru'] 
     if not title_ru: 
      raise forms.ValidationError("Title ru") 

     return self.cleaned_data 

forms.ValidationError("Title ru") отображает сообщение в верхней части страницы, но мне нужно это сообщение над полем

как получить сообщение над полем Title_ru?

ответ

2

Поскольку вы поднимаете ValidationError в методе clean, вы видите сообщение об ошибке в верхней части страницы. Поднять ошибку проверки в clean_title_ru вместо

def clean_title_ru(self): 
    title_ru = self.cleaned_data['title_ru'] 
    if not title_ru: 
     raise forms.ValidationError("Title ru") 

    return self.cleaned_data['title_ru'] 
+0

Спасибо большое за такой быстрый и простой ответ =) Теперь я знаю, как это сделать, а также найти в документации. –

+0

Рад, что это помогло. Пожалуйста, сделайте [отметьте ответ как принято] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), если это было полезно. – karthikr

0

Лучший способ это проверить значение в clean_title_ru, но если вы хотите проверить несколько значение, которое вы можете сделать это, каким образом:

def clean(self): 
    cleaned_data = super(forms.ModelForm, self).clean() 
    title_ru = cleaned_data['title_ru'] 
    if not title_ru: 
     msg = u"error in Title ru" 
     self._errors["title_ru"] = self.error_class([msg]) 

     # These fields are no longer valid. Remove them from the cleaned data. 
     del cleaned_data["title_ru"] 

    return self.cleaned_data