Django

Code

Changeset 9440

Show
Ignore:
Timestamp:
11/14/08 09:37:59 (8 months ago)
Author:
kmtracey
Message:

Fixed #9076 -- Changed BaseInlineFormSet? to not override BaseModelFormSet?'s get_queryset method. BaseInlineFormSet?'s method did not include a couple of fixes/enhancements that were made to the parent's method, resulting in excessive queries (some of which can return bad data due to #9006) for admin pages with inlines.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/forms/models.py

    r9341 r9440  
    464464        # is there a better way to get the object descriptor? 
    465465        self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name() 
    466         super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix or self.rel_name) 
     466        qs = self.model._default_manager.filter(**{self.fk.name: self.instance}) 
     467        super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix or self.rel_name, 
     468                                                queryset=qs) 
    467469 
    468470    def _construct_forms(self): 
     
    480482        return form 
    481483     
    482     def get_queryset(self): 
    483         """ 
    484         Returns this FormSet's queryset, but restricted to children of 
    485         self.instance 
    486         """ 
    487         kwargs = {self.fk.name: self.instance} 
    488         return self.model._default_manager.filter(**kwargs) 
    489  
    490484    def save_new(self, form, commit=True): 
    491485        kwargs = {self.fk.get_attname(): self.instance.pk}