1

Im getting the above error when I run this code. This is happening when I return return modelformset_factory in def get_form_class(self): But its ok when I use return modelform_factory. What could be the issue with the code? Thanks

class ModelAdminMixin(LoginRequiredMixin, PermissionMixin):

    model = None

    #--------------------------------------------------------------------------
    def get_form(self, form_class):

        form_class = self.get_form_class()
        form_kwargs = self.get_form_kwargs()
        if hasattr(self, 'request'):
            request = self.request
            form_kwargs['request'] = request
        return form_class(**form_kwargs)

    #--------------------------------------------------------------------------
    def get_form_class(self):
        # if the View sent has it's own form - use it
        if getattr(self, 'form_class', None) is not None:
            return self.form_class

        # check the global form_override settings
        form = None
        if self.get_model() in form_mapping:#There is a form_mapping.py file
            # format is Model: Form
            form = form_mapping[self.get_model()]

        # if no overriding found - use the standard
        if form is None:
            form = form_mapping['default']

        # create model form dynamically
        return modelformset_factory(self.get_model(), extra=2)

    #--------------------------------------------------------------------------
    def get_model(self):
        return self.model


    def get_queryset(self):
        """ Default queryset is all model's instances
        """
        return self.get_model()._default_manager.all()

    #--------------------------------------------------------------------------
    def get_context_data(self, **kwargs):
        """ Inject models into context
        """
        context = super(ModelAdminMixin, self).get_context_data(**kwargs)
        context['model'] = self.get_model()
        context['model_str'] = str(self.get_model())

        return context

    #--------------------------------------------------------------------------
    def dispatch(self, request, *args, **kwargs):
        """ Dynamic model import
        """
        app = self.kwargs.get('app')
        model = self.kwargs.get('model')
        if self.model is None and app and model:
            app = __import__(app)
            app_models = getattr(app, 'models')
            model = getattr(app_models, model)
            self.model = model
        return super(ModelAdminMixin, self).dispatch(request, *args, **kwargs)

Traceback

Traceback:
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  115.                         response = callback(request, *callback_args, **callback_kwargs)
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)
File "/path/to/nexted/nexted/admin/mixins.py" in dispatch
  187.         return super(ModelAdminMixin, self).dispatch(request, *args, **kwargs)
File "/path/to/nexted/nexted/admin/mixins.py" in dispatch
  113.                                                         *args, **kwargs)
File "/path/to/nexted/nexted/admin/mixins.py" in dispatch
  63.         return super(PermissionMixin, self).dispatch(request, *args, **kwargs)
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  86.         return handler(request, *args, **kwargs)
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/views/generic/edit.py" in get
  195.         return super(BaseCreateView, self).get(request, *args, **kwargs)
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/views/generic/edit.py" in get
  154.         form = self.get_form(form_class)
File "/path/to/django/projects/nexted/nexted/admin/mixins.py" in get_form
  135.         return form_class(**form_kwargs)
File "/path/to/django/environments/env1.5/local/lib/python2.7/site-packages/django/forms/models.py" in __init__
  441.         super(BaseModelFormSet, self).__init__(**defaults)

Exception Type: TypeError at /admin/sch/Sch/create/
Exception Value: __init__() got an unexpected keyword argument 'instance'
okm
  • 23,575
  • 5
  • 83
  • 90
Alexxio
  • 1,091
  • 3
  • 16
  • 38
  • can you post the traceback? – mariodev Aug 31 '13 at 22:06
  • 1
    @mariodev I added the traceback – Alexxio Aug 31 '13 at 22:32
  • 1
    see what happens if you do `_ = form_kwargs.pop('instance')` after `form_kwargs['request'] = request` in the `get_form` method – mariodev Sep 01 '13 at 06:57
  • 1
    I get the error `__init__() got an unexpected keyword argument 'request'` – Alexxio Sep 01 '13 at 21:15
  • 1
    and when I remove 'request', I get `'SchForm' object has no attribute 'request'` – Alexxio Sep 01 '13 at 21:17
  • I give up, maybe you will be better of with django-extra-views or look at this post, seems like a relevant issue http://stackoverflow.com/questions/6276398/multiple-form-classes-in-django-generic-class-views – mariodev Sep 01 '13 at 22:18
  • Inherit from forms.ModelForm (for all those people arriving here with that error message but not the o.p's problem) http://stackoverflow.com/questions/16079299/getting-init-got-an-unexpected-keyword-argument-instance-with-createview – John Mee Sep 18 '13 at 23:43

0 Answers0