I have two models Category and Products.

- a Product can have multiple Categories 
- a Category can have multiple Products.
- Categories have a circular Foreign key, to itself.
- not all Categories have the same depth level

Example:

    Category A
        - Category A_1
        - category A_2
            - Category A_2_1
    Category B
    Category C
        - Category C_1


        class Product:
            categories = models.ManyToManyField(Category)
            name = models.CharField(max_length=255)
        
        class Category:
            categories = models.ForeignKey(self)
            name = models.CharField(max_length=255)
    
    As Form I use a ModelForm:
    
        class ProductForm(ModelForm):
    
        
    
                class Meta:
                    model = Product
                    fields = ['categories', 'name', 'short_description', 
'description']
                    widgets = {
                        'categories': MyWidget,
                    }

**What I want to achieve:**

I want to implement a conditional select (narow options):

1. Only top parent Categories(level 0 A,B,C) are available
2. The user select a parent Category.  If the parent has children a new 
Select box appear with his children(category level 1 A1,C1) 
3. The user select a level 1 Category (A1,C1). If the parent has children a 
new Select box appear with his children(level 2 A2)

- The process is repeated until no children are availavable(recursive), an 
user select the "smallest" category in the tree
- A new button is available for the user to add more categories and start 
the 1-3 process again
- I want to do the select,add new select using JavaScript
- On Form Submit I want to send only the last children categories


Options I thought:

1. Change the ManyToMany coresponding default Fields - looks like there are 
no good hooks and/or inheritance
2. Use a non-default custom Field instean of ManytoMany(like Charfield) - 
more complex on clean,saving Form
3. Change/Inherit the widget. My issues is how to send the data to the 
default Field on submit, and get/show it on edit 
 
I need some help as code and indication how to do this.


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/dc81ac05-b0b7-4653-9779-70998dc86370%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to