Зашифровать DateField в моделях Django? - PullRequest
0 голосов
/ 09 января 2012

У меня есть требование, что я должен зашифровать некоторые поля в таблице. Я использую Django 1.3.1 и postgres 9.1. Я имею в виду это приложение django-fields: -

https://github.com/svetlyak40wt/django-fields/blob/master/src/django_fields/fields.py

Вот мой код: -

patient_type = EncryptedCharField(max_length=80, choices=CHOICES.PATIENT_TYPES)
date_of_birth = EncryptedDateField(null=True, blank=True)
gender = EncryptedCharField(max_length=1024, choices=CHOICES.GENDERS, blank=True)
contact_phone = EncryptedCharField(max_length=1024, blank=True)
security_question = models.ForeignKey(SecurityQuestion, null=True, blank=True)
security_answer = EncryptedCharField(max_length=1024, null=True, blank=True)

В базе данных хранится все в зашифрованном виде, кроме date_of_birth. Выдает эту ошибку

Traceback: Файл "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" в get_response 111. response = callback (request, * callback_args, ** callback_kwargs) Файл "/home/user/slave/old_careprep/CPMS-Source/careprep/../careprep/utilities/decorators.py" в _dec 14. вернуть view_func (request, * args, ** kwargs) Файл "/home/user/slave/old_careprep/CPMS-Source/careprep/../careprep/visit/views.py" в настройке 202. PatientSave () Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" в файле сохранения 460. self.save_base (using = using, force_insert = force_insert, force_update = force_update) Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" в save_base 553. результат = manager._insert (значения, return_id = update_pk, использование = использование) Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" в _insert 195. вернуть insert_query (self.model, values, ** kwargs) Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" в insert_query 1436. return query.get_compiler (using = using) .execute_sql (return_id) Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" в execute_sql 791. курсор = супер (SQLInsertCompiler, self) .execute_sql (нет) Файл "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" в execute_sql 735. cursor.execute (sql, params) Файл "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py" в исполнении 34. вернуть self.cursor.execute (sql, params) Файл "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py" в исполнении 44. вернуть self.cursor.execute (запрос, аргументы)

Тип исключения: ошибка базы данных в / visit / setup / Значение исключения: неверный синтаксис ввода для даты типа: "$ AES $ 55403376ed906e119b0f7779554fbb51" ЛИНИЯ 1: ... L, NULL, '$ AES $ 0452edae035cc33c4084e7b0fb39edd7', '$ AES $ 5540 ... ^ Помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 10 января 2012

Я понял, что раньше использовал DateField, если я конвертирую DateField в CharField и затем применяю EncryptedCharField, это решает мою проблему

...