2013-05-02 57 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 %} 
相关问题