Я использую библиотеку cryptographic_fields.fields
для шифрования некоторых из моих полей, в частности, номера маршрута клиента.
Моя конечная цель , чтобы иметь возможность проверить, если account_number
уже используется в других учетных записях.
Вот как выглядит мой model.py:
class Account(models.Model):
account_number = EncryptedCharField(max_length=20, null=True, blank=True)
Я смотрю, можно ли выполнить фильтрацию по этому полю.
Во время тестирования я создаю 2 учетные записи с номером_счета '123'
.
Когда я пытаюсь отфильтровать и получить эти 2 учетные записи по указанному номеру_счета. Я получаю пустой набор запросов.
Account.objects.filter(account_number='123')
Я думаю, что причина, по которой я получаю пустой набор запросов, заключается в том факте, что этот номер счета уже зашифрован.
Я искалв исходном коде и попытался кодировать строку и выполнить поиск с новым значением кодирования.
from cryptographic_fields.fields import get_crypter
CRYPTER = get_crypter()
account_number = CRYPTER.encrypt('123'.encode('utf-8'))
Account.objects.filter(account_number=account_number)
Но это не работает, так как кажется, что CRYPTER выдает новое, другое зашифрованное значение каждый раз, когда я его использую.