Сортировка пунктов меню Django - PullRequest
2 голосов
/ 11 апреля 2010

У меня есть модель MenuItem:

MenuItem(models.Model)
name=models.CharField(max_length=50)
url = models.URLField() 
position = models.IntegerField() 

Class Meta: 
ordering =['position'] 

тогда я получаю его с помощью MenuItem.objects.all ()

У меня вопрос, как я могу сделать любой удобный интерфейс в панели администратора, чтобы разрешить сортировку MenuItems - например, список с кнопками + и - для перемещения MenuItem вверх и вниз ....

1 Ответ

0 голосов
/ 13 апреля 2010

Начните с простого (для вас, как разработчика), вы можете довольно легко отобразить позицию в ListView.

Вы можете добавить некоторый JavaScript, чтобы превратить каждое отображение позиции в контроллер - / +.Вы можете сделать так, чтобы эти +/- виджеты имели обработчики onclick, которые делают ajax-вызов к пользовательскому представлению, которое обрабатывает сортировку.

Представление ajax довольно простое, вы просто берете предыдущий элемент по порядку:

old_pos = ItemToBumpDown.position
DisplacedItem = MenuItems.objects.filter(position__lt = ItemToBumpDown.position)[0]
ItemToBumpDown.position = DisplacedItem.position
DisplacedItem.position = old_pos
ItemToBumpDown.save()
DisplacedItem.save()

Ваш обратный вызов ajax, когда вызов завершен, может состоять в том, чтобы поменять строку администратора настроенного элемента либо на предыдущий, либо на следующий элемент.

Возможно, вам придется выполнить некоторую полировку, но этодолжно быть начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...