Python Django Как создать хеш-поля внутри django models.py

Я работаю над проектом Python(3.6) и Django(1.10), в котором мне нужно сохранить некоторые учетные данные сторонних сервисов, такие как имя пользователя, пароль и электронная почта, я реализую только API остальных, поэтому формы нет .py на всех. Итак, как я могу создать хеш-поля в файле models.py?

Вот мой текущий models.py:

class DeploymentOnUserModel(models.Model):
    deployment_name = models.CharField(max_length=256, )
    credentials = models.TextField(blank=False)
    project_name = models.CharField(max_length=150, blank=False)
    project_id = models.CharField(max_length=150, blank=True)
    cluster_name = models.CharField(max_length=256, blank=False)
    zone_region = models.CharField(max_length=150, blank=False)
    services = models.CharField(max_length=150, choices=services)
    configuration = models.TextField(blank=False)
    routing = models.TextField(blank=True)

    def save(self, **kwargs):
        if not self.id and self.services == 'Multiple' and not self.routing:
            raise ValidationError("You must have to provide routing for multiple services deployment.")
        super().save(**kwargs)

Я хочу добавить три новых хеш-поля, такие как имя пользователя, пароль и адрес электронной почты.

Помоги мне, пожалуйста!

Заранее спасибо!

1 ответ

Решение

Вы можете использовать стандарт CharField, Для хранения хеш-значения используйте make_password Метод перед сохранением:

from django.contrib.auth.hashers import make_password

password = models.CharField(max_length=256)

def save(self, **kwargs):
    some_salt = 'some_salt' 
    password = make_password(self.password, some_salt)
    if not self.id and self.services == 'Multiple' and not self.routing:
        raise ValidationError("You must have to provide routing for multiple services deployment.")
    super().save(**kwargs)
Другие вопросы по тегам