Django Grappelli重新排列内联id覆盖

时间:2014-04-10 13:20:18

标签: django django-grappelli

根据文件:

http://django-grappelli.readthedocs.org/en/latest/customization.html#rearrange-inlines

  

占位符的两个类很重要。首先,您需要一个类占位符。第二个类必须匹配内联组的id。

一切都很好,我能够设置我的内联很好,我的问题现在 - grappelli在哪里得到“内联组的id”我找不到任何参考,并且通过源代码填写是没有安慰我。

简单地说,我想更改grappelli正在使用的元素ID。目前,它在我看来它正在获取对象名称并转换为小写名称并将set附加到结尾。我们是否有权覆盖“内联组的ID”?

另外,我并非100%确定grappelli究竟是如何(或在哪里)这样做的,事实上它根本就没有记录......

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

它是HTML页面上内联元素的id。您可以检查默认HTML内联元素的ID。

 <div id="[related_name of ForeignKey]-group">

例如: 如果在模型&#34; MyModel2&#34;中,你有一个像这样的ForeignKey:

my_model_1 = models.ForeignKey(MyModel1, related_name='my_model_2')

然后id应为&#34; my_model_2-group&#34;。

答案 1 :(得分:0)

内联组的ID在grappelli/templates/admin/edit_inline,stacked.html第5行或tabular.html第6行中设置(取决于您使用的内联类型):

id="{{ inline_admin_formset.formset.prefix }}-group" >

您可以通过将文件(stacked.html或tabular.html)复制到模板目录并设置变量&#34; template&#34;来覆盖它。到文件的新位置,例如:

# admin.py

class MyModelInline(admin.StackedInline):
    template = 'path/to/stacked.html'
    ...

然后编辑您想要的任何内容,例如stacked.html。

我不知道这是否是最好的做法,但它与django教程中的做法类似。