将帮助文本添加到django管理视图中的只读字段

时间:2016-11-30 00:10:03

标签: django python-2.7 django-1.7 django-modeladmin

以下是我的管理员视图:

@admin.register(AuditStashAwsMasterPolicies)
class AuditPoliciesAdmin(reversion.VersionAdmin):
exclude = ['source_policy_path', 'source_state', 'target_state']
readonly_fields = ['comparison_date', 'source', 'source_policy_name', 'target', 'target_policy_name',
                   'target_policy_path', 'policy_difference']

def policy_difference(self, instance):
    return drift.compare_two_policies(instance.source, instance.source_policy_name, instance.source_policy_path,
                                instance.target, instance.target_policy_name, instance.target_policy_path)

我想要做的是在我的政策差异中添加一些帮助文字'只读字段。从帮助文档中,我只能通过修改模型并在那里使用帮助文本创建只读字段来实现此目的。

问题是我不会将任何值存储在' policy_difference'字段我只是动态生成它,并希望避免将其存储在模型中。

有没有办法在' policy_difference'中添加文字?只读字段而不更改模型AuditStashAwsMasterPolicies?

1 个答案:

答案 0 :(得分:3)

您可以通过覆盖get_form方法来实现它,如下所示:

def get_form(self, request, obj=None, **kwargs):
    help_texts = {'policy_difference': 'Help text explaining policy difference'}
    kwargs.update({'help_texts': help_texts})
    return super(AuditPoliciesAdmin, self).get_form(request, obj, **kwargs)

help_texts关键字最终会传递给modelform_factory方法,并作为Django管理员模型中的标准帮助文本呈现。

如果您使用InlineModelAdmin,则需要以相同的方式覆盖get_formset