I'm writing the custom modelformset. I need that forms to be sorted by value 
of field "ordering". I overloaded __iter__ and __getitem__ methods of 
BaseFormSet in my child formset class. 

*My code:* 

class SortedCatForms(BaseFormSet):
    def __iter__(self):
        print '__iter__'
        return iter(
                sorted(self.forms, key=lambda form: 
form['ordering'].value()))
        
    def __getitem__(self, index):
        print '__getitem__'
        return self.forms[index]

        
OrderCatsFormSet = modelformset_factory(ParentCategory,
                                        fields=('category', 'ordering'),
                                        formset=SortedCatForms,
                                        extra=0)

*OrderCatsFormSet() is empty list. Can't get what the cause of it.*

I traced it and have some results:

When I comment out my custom formset it works:

  OrderCatsFormSet = modelformset_factory(ParentCategory,
                                        fields=('category', 'ordering'),
#                                        formset=SortedCatForms,
                                        extra=0)

After, I sorted it and make iterator object:

forms = OrderCatsFormSet().forms
def __iter__():
   ...:     return iter(sorted(forms, key=lambda form: 
form['ordering'].value()))
for i in __iter__():
   ...:     print i
all my forms is ok...

But when I try to use my modelformset with prints (it is in my code above), 
__iter__ method not prints.
How to fix it? And, what the cause of the problem? 
*Thanks a lot! *

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/1pbENTybdSYJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to