gpt4 book ai didi

python - Django 自定义字段 - 从 to_python 方法获取模型字段

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:23 24 4
gpt4 key购买 nike

已更新

我有以下自定义字段类:

class Binary(models.Field):
__metaclass__ = models.SubfieldBase
def get_prep_value(self, value):
return encryptAES(key, iv_random, str(value))
def to_python(self, value):
return value
def db_type(self, connection):
return 'VARBINARY(900)'

这是我的模型:

class Received(models.Model):
user = models.ForeignKey(User, unique=False, editable=False)
address = Binary(blank=True)
aes_key = Binary(blank=True)
iv = Binary(blank=True)

我正在尝试使用自定义字段类来加密/解密数据。当用户提交表单时,get_prep_value 方法需要对数据进行加密。在 Django 管理界面中,我需要 to_python 方法来解密更改 View 中的数据字段。我正在考虑对 to_python 方法添加以下内容:

def to_python(self, value):
return decryptAES(aes_key?, iv?, value)

我遇到的问题是 to_python 方法单独循环每个字段的值,而我需要字段本身的值,包括字段 aes_key 和 iv 来解密数据。我不知道如何获取 aes_key 和 iv 字段,因此有问号。

希望这能解决问题。

最佳答案

根据您问题的更新,您尝试做的事情实际上并不可行。如果您希望该字段能够自动加密/解密,那么所需的所有信息都必须存储在相应的数据库字段中(请参阅@DanielRoseman的答案)。如果您的数据库遭到破坏,这基本上就否定了加密的用处。不过,我想入侵者仍然需要弄清楚如何正确地将其拼凑在一起。

绝对没有办法在多个数据库字段中存储必要的信息,但有一个字段可以将所有信息集中在一起进行解密。字段是孤立的实体。很明显,它们不允许拥有有关模型上其他字段的任何信息,因为它们可以用在模型上可能不存在这些其他字段的地方。

最好的选择是将加密值和解密所需的信息存储在标准 Django 模型字段中,并使用一种模型方法来解密该值,另一种模型方法来加密该值。

关于python - Django 自定义字段 - 从 to_python 方法获取模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com