根据以下答案:https://stackoverflow.com/a/50007209,可以通过覆盖get_form
类中的ModelAdmin
方法,根据当前模型对象在admin中自定义字段的help_text。
例如,假设有一个具有House
和Room
模型的简单应用。
然后,RoomAdmin
可以基于特定的size
实例为Room
字段自定义帮助文本:
def get_form(self, request, obj=None, **kwargs):
if obj:
help_texts = {'size': get_my_string(obj)}
kwargs.update({'help_texts': help_texts})
return super(RoomAdmin, self).get_form(request, obj, **kwargs)
这里的关键是,size
的帮助文本可以基于特定的obj
(即Room
对象)进行计算。
我不知道如何为InlineModelAdmin
获得相同的结果。
上面引用的答案提到需要以类似方式覆盖get_formset
。但是,传递给obj
的{{1}}是父模型对象,我不知道该如何自定义内联的帮助文本。
假设我有一个get_formset
,其中有HouseAdmin
的堆叠式内联。如何为每个相关房间应用字段Room
的帮助文本的相同自定义?当然,自定义应该特定于每个RoomInline
实例,就像size
情况一样。
仅在Room
中覆盖RoomAdmin
是不够的:
get_formset
该定义的问题在于RoomInline
是(父)def get_formset(self, request, obj=None, **kwargs):
if obj:
help_texts = {'size': get_my_string(obj)}
kwargs.update({'help_texts': help_texts})
return super(RoomInline, self).get_formset(request, obj, **kwargs)
对象,而不是为堆栈中的每个内联考虑的特定obj
对象。