Получение зашифрованного значения в django-fernet-fields
Я использую библиотеку django-fernet-fields:
class RoutePoint(models.Model):
username = models.CharField(max_length=30)
password = EncryptedCharField(max_length=30, null=True)
Когда я обращаюсь к зашифрованному полю, значение поля автоматически расшифровывается.
p = RoutePoint.objects.all()[0]
print(p.password)
> mypass
Есть ли способ получить зашифрованное значение, которое на самом деле хранится в базе данных?
Метод, выполняющий расшифровку внутри model.Field - это def from_db_value(self, value, expression, connection, *args). Теоретически, вы можете переопределить этот метод для RoutePoint.password и заставить его возвращать кортеж, где первый элемент - необработанное значение поля, а второй - расшифрованный открытый текст.
Вот указатель на соответствующий исходный код https://github.com/orcasgit/django-fernet-fields/blob/master/fernet_fields/fields.py#L74.
Примечание: django-fernet-fields не обновлялся более 3 лет, и как предыдущий пользователь я форкнул кодовую базу на ту, которая поддерживается Google Tink вместо https://github.com/script3r/django-tink-fields