我有一个名为国家的多对多字段。
这些国家像我的模板上的堆栈一样依次呈现为一个列表。
美国
澳大利亚
印度
中国
Django:允许用户对django admin中的条目进行排序,因为他们想在模板上看到
现在我想管理员,用户能够配置它们是如何在模板上列出的顺序。没有特定的排序方法(字母和创建)。
所以我想就如何做到这一点提出建议。
我有一个名为国家的多对多字段。
这些国家像我的模板上的堆栈一样依次呈现为一个列表。
美国
澳大利亚
印度
中国
Django:允许用户对django admin中的条目进行排序,因为他们想在模板上看到
现在我想管理员,用户能够配置它们是如何在模板上列出的顺序。没有特定的排序方法(字母和创建)。
所以我想就如何做到这一点提出建议。
在您的国家/地区模型中添加一个排序字段。通过添加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 %}
呈现为列表,你在模板内的形式是什么意思?你想通过管理界面控制上市的顺序? – Babu 2013-05-02 07:24:07
是的,这是我需要的。 – KetanJogani 2013-05-02 07:28:31