【问题标题】:Django models TextField/CharField: Remove null charactersDjango 模型 TextField/CharField:删除空字符
【发布时间】:2017-11-24 12:20:02
【问题描述】:
我有一个视图,它在很多部分都从一个不受信任的来源获取数据,我想将数据保存在 Django 模型的TextField 中。输入可能有空字符,如果我理解正确,Postgres(我项目的后端)禁止在数据库中保存空字符。我可以使用str.replace 来替换空字符,但我必须用str.replace 来混淆我的代码库,因为我有很多点需要从不受信任的数据中创建模型。有没有办法强制清理模型级别的数据?我的意思是,这样我就可以做my_model.save(),并且在我的代码中的一个独特位置有str.replace,而不是在我有TextField的所有地方都有它。
【问题讨论】:
标签:
django
postgresql
django-models
【解决方案1】:
您可以通过以下方式编写保存后信号来做到这一点:
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()