2017-11-24 6 views
0

私は、信頼できないソースからのデータを多くの部分で受け取り、DjangoモデルのTextFieldにデータを保存するビューを持っています。入力にヌル文字が含まれている可能性があります。正しく理解していれば、Postgres(私のプロジェクトのバックエンド)はデータベースにヌル文字を保存することを禁止しています。私はstr.replaceを使用してヌル文字を置き換えることができましたが、私はstr.replaceでコードベースを謎めいていました。なぜなら、信頼できないデータからモデルを作成するポイントがたくさんあるからです。モデルレベルでデータを強制的に消去する方法はありますか?つまり、my_model.save()を実行し、コード内の一意の場所にstr.replaceがあるように、私はTextFieldをすべての場所に持っています。DjangoモデルTextField/CharField:ヌル文字を削除する

あなたは次のように、信号を保存するポストを書くことによってそれを行うことができます

答えて

0

https://docs.djangoproject.com/en/1.11/ref/signals/#post-save

これは、実装例です:

from django.db.models.signals import post_save 
from django.dispatch import receiver 

class SampleModel(models.Model): 
    # ... fields here 

# method for your validations 
@receiver(post_save, sender=SampleModel) 
def validate_input(sender, instance, **kwargs): 
    # your custom validations 
    instance.save() 
関連する問題