【问题标题】:add help text to a read only field in django admin view将帮助文本添加到 django 管理视图中的只读字段
【发布时间】:2017-04-14 04:03:41
【问题描述】:

以下是我的管理员视图:

@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 的情况下将文本添加到“policy_difference”只读字段?

【问题讨论】:

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


    【解决方案1】:

    您可以通过重写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

    【讨论】:

    • 这太棒了,谢谢!尤其是InlineModelAdmin
    猜你喜欢
    • 2018-11-22
    • 2011-04-13
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多