Виджет для отображения категорий в виде дерева в админке Django - PullRequest
3 голосов
/ 06 апреля 2011

существует ли какой-либо существующий код для отображения списка какого-либо объекта Category в админе сайта Django?В идеале я хотел бы, чтобы некоторые представления дерева, такие как

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)

Ответы [ 4 ]

2 голосов
/ 06 апреля 2011

Вот один виджет, основанный на django-mptt:
http://anentropic.wordpress.com/2009/11/05/more-django-mptt-goodness-filteredselectmultiple-m2m-widget/

выглядит так, как вы ищете

2 голосов
/ 06 апреля 2011

Во-первых, вы не определили порядок в этой модели - просто родитель.Вам нужно что-то вроде MPTT , которое отслеживает уровень и положение в пределах этого уровня.

Учитывая это, довольно просто написать метод __unicode__ для модели, который отображает количество дефисов, равное уровню категории:

def __unicode__(self):
   return '%s%s' % ('-' * self.level, self.name)

Что касается кнопки вверх / внизЯ думаю, вам нужно написать это в Javascript.

1 голос
/ 20 февраля 2013

Существует пакет django-Categories , который добавляет поле выбора со всеми категориями на ваш сайт администратора для управления категориями.

0 голосов
/ 06 августа 2013

Это очень просто

Все, что вам нужно сделать, это получить все объекты:

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 %}
...