2016-07-06 2 views
0

私のDjangoモデルのフィールドでは、テキストフィールドの最後にドット( '。')を入力します。それ以外の場合は追加します。バリデータを使用してエラーを発生させる代わりにフィールドを変更/保存します

私はバリデータを使用する方法について考えてきましたが、それはそれを行うための適切な方法ではありませんようだ:

私は(必要な場合)のTextFieldの値を変更することである必要があるWhay
name = models.TextField(validators=[validate_dot]) 

def validate_dot(value): 
    if value: 
     if value[-1] != '.': 
      return value + '.' 

を高めるためではありませんエラー。

これを達成するための最良の方法は何ですか?

+0

の可能性のある重複した[これはDjangoのモデルフィールドを検証する方法ですか?](http://stackoverflow.com/questions/12945339/is-this-the-way-to-validate-django-model-フィールド) – Sayse

+0

フィールドの 'onchange'メソッドやフォームの' onsubmit'メソッドで、クライアント側で行うのはどうでしょうか?これは、実際にドットが追加されていることをユーザが余儀なく知ることができる。 – raphv

+0

この値はgointでDBに保存されるため、サーバー側でこの問題を確認することをお勧めします。いずれにせよ、私はcliend側でそれをチェックすることもできます。 – loar

答えて

0

モデルのsave()メソッドを上書きできます。

def save(self, *args, **kwargs): 
    if not self.name.endswith("."): 
     self.name = self.name + "." 
    super(Model, self).save(*args, **kwargs) 
関連する問題