Django过滤器和Django加密字段

问题描述 投票:2回答:2

我具有具有first_name字段的以下模型

from django.db import models
from encrypted_fields import EncryptedCharField

class Customer(models.Model):
    first_name = EncryptedCharField(max_len=30)

我使用django-encrypted-fields加密存储在数据库中的数据。因此(我认为),我无法筛选结果。我想这样做

customers = Customer.objects.all().filter(first_name__icontains="George") #George exists as customer

但是我得到一个空清单。我有办法解决这个问题吗?

django encryption django-filter
2个回答
1
投票
可能的解决方案

尽管您可以通过散列解决此问题。例如,如果您的用户提供了用于身份验证的电子邮件和密码,但是您希望将电子邮件加密存储在数据库中,则除了加密的电子邮件之外,还可以存储电子邮件的哈希版本。然后,您可以复制哈希并对其进行查询,只有在找到用户后才对电子邮件进行解密。


0
投票
执行类似操作:

return ip_address in BlockedIP.objects.values_list('ip_address', flat=True)

请注意,如果您有很多记录,这很可能效率不高。
© www.soinside.com 2019 - 2024. All rights reserved.