2010-04-11 6 views
2

j'ai modèle MenuItem:élément de menu Django tri

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

Class Meta: 
ordering =['position'] 

alors je suis retriving par MenuItem.objects.all()

Ma question est de savoir comment puis-je faire une interface utilisateur conviviale dans le panneau d'administration pour permettre le tri MenuItems - par exemple la liste avec les boutons + et - pour déplacer MenuItem haut et bas ....

Répondre

0

Commencez simple (pour vous en tant que développeur), vous pouvez assez facilement afficher la position dans un ListView .

Vous pouvez ajouter du javascript pour transformer chaque affichage de la position en un contrôleur -/+. Vous pouvez faire en sorte que ces widgets +/- aient des gestionnaires onclick qui effectuent un appel ajax vers une vue personnalisée qui gère le tri.

La vue ajax est assez simple, il vous suffit saisir l'élément précédent dans l'ordre:

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() 

Votre rappel ajax lorsque l'appel est terminé peut être d'échanger la ligne d'administration de l'élément ajusté soit il est précédent ou l'élément suivant.

Il y a un peu de polissage que vous pourriez avoir besoin de faire, mais cela devrait être un début.

Questions connexes