2011-03-18 25 views
1

頁上的關係,我有兩個型號:Django |排序一個一對多的碩士管理

Folder 
    ... 

Photo 
    folder = models.ForeignKey(Folder) 

我在想,如果我可以一個字段添加到文件夾的管理員編輯頁面,這樣我可以對列表進行排序與該文件夾相關的照片。

+0

你爲什麼不把訂單字段放在照片/內聯的任何原因?您可以使用照片ID的鍵值對將文本字段或其他東西標準化爲它們的順序值......但是在您已擁有的每張照片桌上放置每個照片屬性似乎更自然。 – 2011-03-18 18:00:25

+0

我確實在照片上有訂單字段,但我想讓用戶編輯每個文件夾的照片順序。如果在編輯時它們不在同一個範圍內(文件夾),將很難知道該命令是什麼。 – johannix 2011-03-18 18:05:20

+0

哦,我明白你現在說的話。每個文件夾照片排序。但是,如果照片只能有一個文件夾,是不是隻有一個文件夾相關的照片的排序? – 2011-03-18 18:10:33

回答

0

如果您使用的是InlineModelAdmin以及開發版本的django,您可以設置ordering選項並定購照片。

檢查文檔:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-options

+0

這很糟糕。我猜我可以重寫在照片字段中顯示的內容,然後使用list_editable以某種方式在某些jQuery中對它們進行排序? – johannix 2011-03-18 18:06:26

+0

我還沒有在'Django Admin'中試過'jQuery'。我知道它在那裏,但我嘗試只使用記錄的選項,通常這就夠了。 – gruszczy 2011-03-18 18:11:11

+0

你認爲有一種方法可以做我正在討論的內容嗎? – johannix 2011-03-18 18:19:03

0

是的,這是一個不那麼記錄的修復程序,我發現在試圖解決同樣的問題的通病。

指定Inline使用的FormSet,並在您的formset定義中覆蓋get_queryset()

from django.forms.models import BaseInlineFormSet 

class OrderedFormSet(BaseInlineFormSet): 
    def get_queryset(self): 
     return super(OrderedFormset, self).get_queryset().order_by('-sortfield') 

class MyInline(admin.TabularInline): 
    model = Item 
    formset = OrderedFormSet 
+0

Yuji,使用formset來訂購物品和使用gruszczy的答案中的排序有什麼區別? – johannix 2011-03-18 18:57:53

+0

「排序」內聯在最新版本中不存在。它只在開發版本中。 – 2011-03-18 18:58:39

+0

啊。得到你...所以開發版'訂購'字段實際上照顧這種確切的情況...... – johannix 2011-03-18 19:00:31