django 裡面怎麼好像沒有內建的 grid 產生器? 沒有在 admin app 裡找,後來是找到這個 django-grid ,看起來用法很簡單,就用了。一開始是照著用,然後還去改了他原來的 template,後來才想到應該在自己要用到 grid 的 template 裡用 {% include ‘grid/object_list.html’ %} 才對,這樣就可以不用更動到原來的 template。
grid 裡已經有處理分頁的部分,官方的文件沒提到的幾點:
- 自訂 column 的標題:如果你的 model 裡已經有加上去的話,它會自動去抓,但是如果是自訂的欄位,就要這樣用:columns = ( (‘field1’, ‘欄位1’), (‘field2’, ‘欄位2’), )
- 刪除:grid 有定義這個,在定義 columns 的時候,要使用 __delete__,例如: columns = ( (‘field1’, ‘欄位1’), (‘field2’, ‘欄位2’), (‘__delete__’, ‘刪除’), )
- 自行定義欄位:要額外增加 custom_columns,其形態是 dict,grid 在遇到裡面指定的元素時,會改用你定義的 template 去顯示,來達到自定義的效果:custom_columns={ ‘field1’: ‘app/custom_field1.html’ }
- l10n:grid 沒有做這部分,這就要自己去改 template 了。
總結範例:[python]from grid import Grid
class MyGrid(grid):
model = your_model
columns = ( (‘field1’, ‘欄位1’), (‘field2’, ‘欄位2’), )
sortable = (‘field1’,)
custom_columns={ ‘field1’: ‘app/custom_field1.html’ }
[/python]