Skip to content

Django forms widget for displaying trees with fancytree js library

License

Notifications You must be signed in to change notification settings

Heymen22/django-mptt-autocomplete

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Mptt Autocomplete Widget

django-mptt-autocomplete provides a widget using the fancytree js library to render a forms.ModelMultipleChoiceField as a tree with selectable and collapsable nodes with an autocomplete to search in existing tree.

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,model=Category)
    )

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 69.2%
  • CSS 27.2%
  • Python 3.4%
  • HTML 0.2%