2013-05-02 27 views
0

我有一個名爲國家的多對多字段。
這些國家像我的模板上的堆棧一樣依次呈現爲一個列表。
美國
澳大利亞
印度
中國
Django:允許用戶對django admin中的條目進行排序,因爲他們想在模板上看到

現在我想管理員,用戶能夠配置它們是如何在模板上列出的順序。沒有特定的排序方法(字母和創建)。

所以我想就如何做到這一點提出建議。

+0

呈現爲列表,你在模板內的形式是什麼意思?你想通過管理界面控制上市的順序? – Babu 2013-05-02 07:24:07

+0

是的,這是我需要的。 – KetanJogani 2013-05-02 07:28:31

回答

1

在您的國家/地區模型中添加一個排序字段。通過添加Meta排序,您可以給出默認排序:

class Country(models.Model): 
    name = models.CharField("Name", max_length=200) 
    sorting = models.IntegerField("Ordering", blank=True, null=True, 
     help_text="A number. Use tens or hundreds to be able to add Counties.") 

    class Meta: 
     ordering = ('sorting', 'name') 

模型中的排序是默認排序。排序也可以在您的查詢或ModelAdmin中設置。在views.py:

countries = Country.objects.all().order_by('sorting', 'name') 

在admin.py:

class CountryAdmin(admin.ModelAdmin): 
    ordering = ['sorting', 'name' ] 
    #Bonus tip: editing in the list view! 
    list_editable = ['sorting', ] 
    #Need sorting in list_display to get list_editable to work. 
    list_display = ['title', 'sorting'] 
我用[ '排序', '名']因爲你的國家得到由 '排序',但如果分類排序

未填寫(或相等),然後排序將回退到字母'名稱'。記住:如果在模型字段中使用blank = True和null = True。然後排序字段將是可選的。但沒有任何價值是空的,那是在任何數量之前[空,空,1,2,3]。這可能是不希望的。要進行排序,請將「blank = True,null = True」離開。

難道光是聰明地使用幾十或幾百個這樣的列表可以進行調整,國家可以安裝英寸

如果您嘗試修復奇怪的國名像「荷蘭」,比建議你做一個排序= models.CharField(),並把prepopulated_fields在你的管理:

prepopulated_fields = { 'sorting': ('name',) } 

你的編輯器只需要刪除「的」讓荷蘭毗鄰尼泊爾,而不是泰國。

與數據整理模板很簡單:

{% for country in countries %}{{ country.name }}{% endfor %} 
相關問題