Skip to content

Django forms widget for displaying trees with fancytree js library

License

Notifications You must be signed in to change notification settings

silentjay/django-fancytree

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Fancytree Widget

django-fancytree provides a widget using the fancytree js library to render a forms.ModelMultipleChoiceField as a tree with selectable and collapsable nodes.

See included project 'treewidget' as an example. Widget is used in ModelMultipleChoiceField and allows user to select multiple categories.

Requirements

django, django-mptt, jquery, jquery-ui

Usage

from fancytree.widgets import FancyTreeWidget

categories = Category.objects.order_by('tree_id', 'lft')

class CategoryForm(forms.Form):
    categories = forms.ModelMultipleChoiceField(
       queryset=categories,
       widget=FancyTreeWidget(queryset=categories)
    )

In this example Category is a model registered with django-mptt.

Widget accepts queryset option, which expects pre-ordered queryset by "tree_id" and "lft".

If you want to adjust tree data creation, you can define 'get_doc' method on your model. Example:

def get_doc(self, values):
  doc = {"title": name, "key": self.pk}
  if str(self.pk) in values:
      doc['select'] = True
      doc['expand'] = True
  return doc

About

Django forms widget for displaying trees with fancytree js library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 74.5%
  • CSS 23.0%
  • Python 2.4%
  • HTML 0.1%