是否有任何现有代码在Django站点的管理员中显示某些Category对象的列表? 理想情况下,我喜欢像
这样的树形表示cat_1
---- cat_1_1
---- cat_1_2
cat_2
cat_3
---- cat_3_1
---- cat_3_2
---- cat_3_3
使用向上/向下按钮更改订单。
class Category(models.Model):
parent = models.ForeignKey('self', null=True, related_name='children')
name = models.CharField(max_length=100)
答案 0 :(得分:2)
首先,您还没有在此模型上实际定义订单 - 只是父订单。您需要MPTT之类的内容来跟踪该级别内的级别和位置。
鉴于此,为模型编写__unicode__
方法相当容易,该方法显示与类别级别相等的连字符数:
def __unicode__(self):
return '%s%s' % ('-' * self.level, self.name)
至于上/下按钮,你需要在Javascript中写一下,我希望。
答案 1 :(得分:2)
这是一个小部件,基于django-mptt:
http://anentropic.wordpress.com/2009/11/05/more-django-mptt-goodness-filteredselectmultiple-m2m-widget/
看起来像你在找什么
答案 2 :(得分:1)
有一个django-categories package,可以在管理网站上添加一个包含所有类别的选择框来管理类别。
答案 3 :(得分:0)
这很简单
您在视图中所要做的就是获取所有对象:
categories = Category.objects.all()
然后在你的模板中:
{% for category in categories %}
<li>- {{category.name}} </li>
{% for child in category.children.all %}
<ul>* {{child.nom}} </ul>
{% endfor %}
</li>
{% endfor %}
答案 4 :(得分:0)
生成所需的树状结构需要表格数据的“修改的预序树遍历”。自定义实现将相当复杂。
您可以使用名为 Django MPTT 的现有包来简化基于 Category 模型的分层树生成。
有了它,您可以实现以下目标: