Django管理员根据请求更改to_python输出

时间:2012-02-15 18:34:39

标签: django forms encryption admin field

我想知道如何根据请求中的数据更改表单字段的行为...特别是因为它与Django Admin有关。例如,我想根据请求数据(例如POST或会话变量)解密管理员中的字段。

我的想法是开始考虑覆盖django / contrib / admin / options.py中的change_view方法,因为它可以访问请求。但是,我不确定如何根据请求中的某些值来影响字段值显示字段的方式。如果请求具有正确的值,则将显示字段值;否则,字段值将返回类似“NA”的内容。

我的想法是,如果我能以某种方式将该请求值放入to_python()方法中,我可以直接影响该字段的显示方式。我应该尝试将请求值传递到 init 形式,然后以某种方式进入字段 init 吗?有什么建议我怎么处理这个?

感谢阅读。

在models.py

class MyModel(models.Model):
    hidden_data = models.CharField()

在admin.py

class MyModelAdmin(models.ModelAdmin):
    class Meta: 
        model = MyModel

def change_view(self, request, object_id, extra_context=None):
    .... # Perhaps this is where I'd do a lot of overriding? 
    ....
    return self.render_change_form(request, context, change=True, obj=obj)

1 个答案:

答案 0 :(得分:1)

我没有对此进行过测试,但您可以覆盖render_change_form的{​​{1}}方法来隐藏您的代码,以便在处理ModelAdmin之间更改字段值呈现的实际模板

change_view