Есть ли способ манипулировать набором запросов из модели после выборки из базы данных?
Я новичок в 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"), но это грязно и с плохой производительностью.
есть ли способ сделать это?