在Django

时间:2016-05-19 07:09:02

标签: python django django-models

我的问题是在管理界面中编辑模型字段。该模型具有加密密钥,我已经为已登录的用户完成了一个表单,可以在网站中编辑他们的模型/密钥。

现在,我希望管理员可以在管理界面中编辑这些相同的密钥。这要求必须先将密钥加密,然后再将其保存在数据库中

我的管理界面中的模型包含admin.py中的代码:

admin.site.register(CryptedKeysModel)

我现在会看到一个加密字段,但是如果我编辑任何字段,它就不会被加密。当我在网站上为用户显示时,我在视图中进行加密,但是当我在管理界面中保存字段时,我应该在哪里进行加密?我想在models.py(?)

2 个答案:

答案 0 :(得分:1)

您可以覆盖ModelAdmin.save_model()

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()