Получение зашифрованного значения в 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

Вернуться на верх