2012-04-01 114 views
1

是否可以更改內聯的顯示以將其更改爲this?我正在考慮更改管理模板文件「tabular.html」,是否有可能或者我應該改變別的東西?Django表格內聯顯示

更新

好吧,我一直在試圖編輯tabular.html但我的Django的經驗是不夠的,瞭解如何/在哪裏進行必要的修改......哪裏任何線索我應該開始? 我不應該改變CSS嗎? 我猜{{field.field}}自動呈現在下拉菜單中(Django管理默認值),如果我這個理解正確...

更新2

我能夠改變第二列,我想,但我認爲,第一個它的將是棘手的功能...當前status

更新3

一個黑客,我認爲會的工作是在每個內聯上僅顯示第一個字段的其中一個選項,然後禁用「添加其他選項」。我如何迭代「tabular.html」中的選項?

更新4

我猜的伎倆應該在這裏完成...我怎麼能以顯示每行只有一個選擇在球場上的選擇重複?

{% for fieldset in inline_admin_form %} 
      {% for line in fieldset %} 
      {% for field in line %} 
      {{ field.get_choices_display }} 
       <td class="{{ field.field.name }}"> 
       {% if field.is_readonly %} 
        <p>{{ field.contents }}</p> 
       {% else %} 
        {{ field.field.errors.as_ul }} 
        {{ field.field }} 
       {% endif %} 
       </td> 
      {% endfor %} 
      {% endfor %} 
     {% endfor %} 

回答

3

是的,你可以改變你的InlineModelAdmin實例的template您的自定義模板,例如customized_inline.html。首先,將django/django/contrib/admin/templates/admin/edit_inline/tabular.html複製到您的模板路徑中的customized_inline.html。

編輯

也許我被誤解。如果要更改表單字段的呈現樣式,通常的方法是更改​​它的widget。在Django ModelAdmin和InlineModelAdmin中,定製一個字段控件的主要方法是在django/contrib/admin/options.py內部使用BaseModelAdmin.formfield_for_dbfield方法,讀取代碼時需要使用the doc,而當您想要更改表單字段的控件時。

對於有選擇的字段,您可以簡單地在ModelAdmin/InlineModelAdmin實例中設置radio_fields以將字段呈現爲無線電選擇而不是下拉菜單。

此外,使用OneToOneField而不是ForeignKey的,或設定extramax_num在InlineModelAdmin情況下,以防止管理員從渲染內聯的多行,如:

class SomeInlineAdmin(admin.TabularInline): 
    model = Foo 
    extra = 1 
    max_num = 1 

我無法打開你的第二個鏈接,你可以發佈問題中的事情而不是使用外部鏈接。

+0

謝謝,我能夠得到我想要的效果。 – Pedro 2012-04-02 16:07:58