python - django admin/options.py TypeError: 2 options needed, 3 given -


edit: have posted full traceback below, requested.

i needed custom logic happen before deleting pages model, overloaded delete() method. (i know bad form. fixed later, it's important express how got mess)

with this:

def delete(self, *args, **kwargs):     # stuff...     super(pages, self).delete() 

unfortunately, caused following typeerror when tried delete page via admin interface: delete_model() takes 2 positional arguments 3 given

i decided needed things properly, , deleted delete method overload, , implemented pre_delete logic via following signal handler:

@receiver(pre_delete, sender=pages) def handle_page_delete(sender, **kwargs):     obj = kwargs['instance']       if(obj != none):         tmp1 = obj.prev_id         tmp2 = obj.next_id      if(tmp1 != none):         tmp1.next_id = tmp2         obj.prev_id = none      if(tmp2 != none):         tmp2.prev_id = tmp1         obj.next_id = none 

i followed best practices putting handler in signals sub-module , registering via ready() in overloaded appconfig in apps.py.

unfortunately, still got same error: typeerror delete_model() takes 2 positional arguments 3 given

i re-implemented overloaded delete function stub, thinking maybe needed put proper options in. so, kept signals logic around, , added following pages model:

def delete(self, *args, **kwargs):     super(pages, self).delete(*args, **kwargs) 

you'll note time searched through documentation, , put proper 2 *args, , **kwargs arguments.

but still same typeerror: delete_model() takes 2 positional arguments 3 given

so finally, commented out custom deletion logic whatsoever, , used vanilla django codebase. still same error: delete_model() takes 2 positional arguments 3 given

what gives? exception location inside django installation itself, in django/contrib/admin/options.py. i've never had problems installation before, , don't think should consider problem django itself. think i'm 1 doing wrong here, i'm kind of stuck no real idea of go here.

any appreciated. thank time.

edit

as requested, full trace follows:

environment:   request method: post request url: http://127.0.0.1:8000/admin/webcomics/pages/13/delete/  django version: 1.10.5 python version: 3.6.0 installed applications: ['webcomics.apps.webcomicsconfig',  'tinymce',  'django.contrib.admin',  'django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.messages',  'django.contrib.staticfiles'] installed middleware: ['django.middleware.security.securitymiddleware',  'django.contrib.sessions.middleware.sessionmiddleware',  'django.middleware.common.commonmiddleware',  'django.middleware.csrf.csrfviewmiddleware',  'django.contrib.auth.middleware.authenticationmiddleware',  'django.contrib.messages.middleware.messagemiddleware',  'django.middleware.clickjacking.xframeoptionsmiddleware']    traceback:  file "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner   39.             response = get_response(request)  file "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response   187.                 response = self.process_exception_by_middleware(e, request)  file "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response   185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)  file "/usr/local/lib/python3.6/site-packages/django/contrib/admin/options.py" in wrapper   544.                 return self.admin_site.admin_view(view)(*args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view   149.                     response = view_func(request, *args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func   57.         response = view_func(request, *args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/contrib/admin/sites.py" in inner   211.             return view(request, *args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper   67.             return bound_func(*args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view   149.                     response = view_func(request, *args, **kwargs)  file "/usr/local/lib/python3.6/site-packages/django/utils/decorators.py" in bound_func   63.                 return func.__get__(self, type(self))(*args2, **kwargs2)  file "/usr/local/lib/python3.6/contextlib.py" in inner   53.                 return func(*args, **kwds)  file "/usr/local/lib/python3.6/site-packages/django/contrib/admin/options.py" in delete_view   1718.             self.delete_model(request, obj)  exception type: typeerror @ /admin/webcomics/pages/13/delete/ exception value: delete_model() takes 2 positional arguments 3 given 

everyone. so, yes, doing wrong. go out escher, suggested have @ admin.py file. turns out, there duplicate overloaded delete() , delete_model() methods had forgotten to, poetically enough, delete. cleared shortly after got rid of duplicates. jon clements right, well.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -