Django和过滤加密字段

时间:2014-05-28 09:21:58

标签: python django encryption django-filter

我正在使用django-encrypted-fields来加密我的数据库上的数据。但我希望能够根据用户的标准过滤它们,例如搜索具有特定名称(搜索词)的客户端。但正如我在这里和任何地方所读到的那样,如果使用EncryptedFields,则无法过滤。所以我想知道是否可以在每个数据库记录上使用标准for循环来查看是否匹配模型的字段?

例如

clients = Client.objects.all()
post_data = form.cleaned_data

search_result = []
for client in clients:
    if (post_data['charfield1'].lower() in client.charfield1.lower() and 
        post_data['charfield2'].lower() in client.charfiedl2.lower() and...etc

        search_result.append(client)

我知道它根本没有效率。但是,如果您真的想要添加过滤,还有另一种方法吗?并且此方法不会处理None值(如果允许),因为如果customer.field为None,则无法执行post_data['field'] in customer.field。所以这种情况我认为需要妥协吗?你会怎么处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

从Django 1.7开始,如果您使用Postgres,您可以使用此软件包过滤加密字段:http://django-pgcrypto.readthedocs.org/en/latest/