добавление текста справки в поле только для чтения в представлении администратора django
Ниже приведен мой вид администратора:
@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', я просто генерирую его на лету и хотел бы избежать его хранения в модели.
Есть ли способ добавить текст в 'policy_difference' поле только для чтения без изменения модели AuditStashAwsMasterPolicies?
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 admin.В случае, если вы используете
InlineModelAdmin
, вам нужно переопределитьget_formset
точно так же.