2011-08-09 17 views
0

モデルにManyToManyFieldフィールドがあります。このモデルを使用するModelFormもあります。ModelFormのManyToManyFieldのerror_messages

このようなフィールドにerror_messagesを定義する方法はありますか?

例:

class Article(models.Model): 
    categories = models.ManyToManyField(Category) 

class ArticleForm(ModelForm): 
    class Meta(ContentForm.Meta): 
     model = Article 

私がするArticleFormモデルのカテゴリフィールドのための '必要' というエラーメッセージを上書きしたいです。

私はこの問題について語っていましたが、すべてのソリューションが動作しません.ModelFormまたはManyToManyField用ではありません。

答えて

1

このフィールドで独自の検証を行うことができます。 model m2m field blank = trueに設定し、フォームでclean_categoriesメソッドを実装します。フィールドのカテゴリが有効でない場合は、コンテンツで例外を発生させます。モデルで

:フォームで

categories = models.ManyToManyField(Category, blank=True) 

def clean_categories(self): 
    if not self.cleaned_data.get('categories'): 
     raise forms.ValidationError('My custom message') 
    return self.cleaned_data['categories'] 
+0

それは、清潔で、明示的および短期ソリューションですので、私はそれを受け入れます。それでも、あなたが実際にエラーメッセージを上書きするときの解決策はもっと高く評価されるでしょう(より多くのDRYになるでしょう)。ヘルプThx。 –

+0

多分、より多くのDRY(複数のフォームでエラーメッセージを変更する必要がある場合)、良い考えはforms.ModelFormをサブクラス化することです。サブクラスはメッセージを変更し、フォームはそのサブクラスを使用します。私はそれが可能であるかどうかわからない、私はそれを確認する必要があります。受付をありがとう。 – zaan

+0

私は実際にサブクラス化を行っているので、それは確かに働いています:-) –

関連する問題