Есть ли способ манипулировать набором запросов из модели после выборки из базы данных?

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

Мои таблицы включают внешний ключ.

class person(BaseModel):
  bank_account = models.ForeignKey(BankAccount)

Для вставки в базу данных я переопределяю метод save в BaseModel:

class BaseModel(Model):
  def save(self, *args, **kwargs):

    if self.__name__ is "BankAccount":
      encrypt_model(self, encrypt)

    # save the model
     super(BaseModel, self).save(*args, **kwargs)

и это работает нормально. этот метод сохранения вызывает каждую модель внутри модели Person, я имею в виду, что если внутри модели BankAcount есть другая модель с ForeignKey и эта модель должна быть также зашифрована и я сохраняю модель Person "save" метод будет вызываться для каждой модели внутри, так что я могу проверить, должна ли эта модель быть зашифрована.

моя проблема заключается в получении данных из базы данных,

я попытался создать Manager и переопределить метод get_queryset:

class newManager(PolymorphicManager):
  def get_queryset(self):
    queryset = super().get_queryset()
    if self.__name__ is "BankAccount":
      decrypt_data(queryset)

    return queryset

проблема этого подхода в том, что метод "get_queryset" вызывается только один раз для модели, например:

Peson.newManager.filter(id=6)

get_queryset вызывается только один раз и self.__name__ не равен BankAcount. Я могу в цикле перебрать все данные из queryset и проверить, нужно ли расшифровать одну из моделей внутри (равную BankAccount"), но это грязно и с плохой производительностью.

есть ли способ сделать это?

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