2

I am trying to pass an argument asins to each form in a modelformset, so i followed the solution described here https://stackoverflow.com/a/624013/389453, heres the code

VariationFormSet = modelformset_factory(Variation, form=VariationASINMatch, extra=0)
VariationFormSet.form = staticmethod(curry(VariationFormSet, asins=extra_asins))
formset = VariationFormSet(request.POST or None, request.FILES or None, queryset=variation_q)

heres the form :

class VariationASINMatch(forms.ModelForm):

    def __init__(self, asins, *args, **kwargs):
        instance = kwargs['instance']
        super(VariationASINMatch, self).__init__(*args, **kwargs)
        self.fields['asin'] = fields.ChoiceField(choices=asins[instance.upc])


    class Meta:
        model = Variation
        fields = ('child_sku', 'upc', 'asin', 'id_type')

unfortunately for some reason the curry is causing this errror:

Traceback:
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
  307.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  79.         response = view_func(request, *args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  197.             return view(request, *args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
  28.             return bound_func(*args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
  24.                 return func(self, *args2, **kwargs2)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/contrib/admin/options.py" in changelist_view
  1079.                 response = self.response_action(request, queryset=cl.get_query_set())
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/contrib/admin/options.py" in response_action
  836.             response = func(self, request, queryset)
File "/home/paulo/Documents/Projects/tsn_env/tsn/../tsn/product/admin.py" in get_variation_asins
  130.             formset = VariationFormSet(request.POST or None, request.FILES or None, queryset=variation_q)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/models.py" in __init__
  415.         super(BaseModelFormSet, self).__init__(**defaults)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/formsets.py" in __init__
  47.         self._construct_forms()
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/formsets.py" in _construct_forms
  108.             self.forms.append(self._construct_form(i))
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/models.py" in _construct_form
  443.         return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/formsets.py" in _construct_form
  127.         form = self.form(**defaults)
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/utils/functional.py" in _curried
  55.         return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
File "/home/paulo/Documents/Projects/tsn_env/lib/python2.7/site-packages/django/forms/models.py" in __init__
  415.         super(BaseModelFormSet, self).__init__(**defaults)

Exception Type: TypeError at /admin/product/product/
Exception Value: __init__() got an unexpected keyword argument 'instance'

i have looked for solutions to this, but found none so far, i welcome any solutions/suggestions. Thanks

Community
  • 1
  • 1
Paulo
  • 6,982
  • 7
  • 42
  • 56

1 Answers1

2

So i finally solved this, the error is here :

VariationFormSet = modelformset_factory(Variation, form=VariationASINMatch, extra=0)
VariationFormSet.form = staticmethod(curry(VariationFormSet, asins=extra_asins))

instead of giving curry the Form class VariationASINMatch, i gave it the formset class VariationFormSet

so it should look like this

VariationFormSet = modelformset_factory(Variation, form=VariationASINMatch, extra=0)
VariationFormSet.form = staticmethod(curry(VariationASINMatch, asins=extra_asins))
Paulo
  • 6,982
  • 7
  • 42
  • 56