我的问题是在管理界面中编辑模型字段。该模型具有加密密钥,我已经为已登录的用户完成了一个表单,可以在网站中编辑他们的模型/密钥。
现在,我希望管理员可以在管理界面中编辑这些相同的密钥。这要求必须先将密钥加密,然后再将其保存在数据库中。
我的管理界面中的模型包含admin.py中的代码:
admin.site.register(CryptedKeysModel)
我现在会看到一个加密字段,但是如果我编辑任何字段,它就不会被加密。当我在网站上为用户显示时,我在视图中进行加密,但是当我在管理界面中保存字段时,我应该在哪里进行加密?我想在models.py(?)
答案 0 :(得分:1)
class SomeModelAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
#Encript fields values
super(SomeModelAdmin, self).save_model(request, obj, form, change)
答案 1 :(得分:1)
有时能够将自定义代码添加到Django Admin中的对象的save方法是很好的。因此,在管理对象详细信息页面(更改表单)上编辑对象时,将以下方法覆盖添加到admin.py中的ModelAdmin将允许您将自定义代码添加到保存功能。
在admin.py中:
class MyModelAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
# custom stuff here
obj.save()