Re: Field pre-load hook?

16 views
Skip to first unread message

Derek

unread,
Jan 14, 2013, 9:30:04 AM1/14/13
to django...@googlegroups.com
Maybe have a look at:

* http://www.tylerlesmann.com/2008/dec/19/encrypting-database-data-django/
* https://github.com/svetlyak40wt/django-fields#readme

On Sunday, 13 January 2013 22:00:24 UTC+2, Matt Barry wrote:
Hi,

I'm creating a model from an external database that has some encrypted columns.  Initially I was thinking of creating a custom field type:

class EncryptedField(models.Field):
  def db_type(self, connection): 
    return 'TEXT'
  def pre_save(self, model, add):
    return encrypt(getattr(model, self.attname))

..but it doesn't seem there are any hooks to decrypt the data on the loading side.  Am I missing anything, or is there a better way to do this sort of thing?

Thanks,
Matt

Tom Evans

unread,
Jan 14, 2013, 9:45:19 AM1/14/13
to django...@googlegroups.com
On Sun, Jan 13, 2013 at 8:00 PM, Matt Barry <matt.b...@gmail.com> wrote:
> Hi,
>
> I'm creating a model from an external database that has some encrypted
> columns. Initially I was thinking of creating a custom field type:
>
> class EncryptedField(models.Field):
> def db_type(self, connection):
> return 'TEXT'
> def pre_save(self, model, add):
> return encrypt(getattr(model, self.attname))
>
> ..but it doesn't seem there are any hooks to decrypt the data on the loading
> side. Am I missing anything, or is there a better way to do this sort of
> thing?
>
> Thanks,
> Matt
>

Hi Matt

get_db_prep_value() is called prior to saving in the database, this is
where you should encrypt the data.
to_python() is called on values loaded from the database, or
deserialised, this is where you should decrypt the data.

https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#converting-database-values-to-python-objects

Cheers

Tom
Reply all
Reply to author
Forward
0 new messages