2012-01-08 209 views
2

我试图将参数传递asins在一个modelformset各形式,所以我随后在此描述https://stackoverflow.com/a/624013/389453溶液,继承人的代码Django的咖喱错误

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) 

继承人的形式:

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') 

不幸的是由于某种原因,咖喱是导致此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' 

我寻找解决方案,但迄今没有发现,我欢迎任何解决方案/建议。由于

回答

2

所以,我终于解决了这一点,错误是在这里:的

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

不是给咖喱Form类VariationASINMatch,我给了它的formset类VariationFormSet

所以它应该是这样的

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

我这个解决方案为你工作,然后请标记答案为接受。谢谢。 – jcollado 2012-01-09 08:27:00

+0

肯定的事情,刚刚等了2天:P – Paulo 2012-01-09 09:54:11

+0

对不起,我不知道48小时的延迟接受自己的答案。 – jcollado 2012-01-09 09:58:02