在django admin中为每个内联模型实例自定义帮助文本

时间:2019-05-01 03:47:24

标签: django django-forms django-admin django-1.11

根据以下答案:https://stackoverflow.com/a/50007209,可以通过覆盖get_form类中的ModelAdmin方法,根据当前模型对象在admin中自定义字段的help_text。

例如,假设有一个具有HouseRoom模型的简单应用。 然后,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对象。

0 个答案:

没有答案