/ / __init __ () отримав несподіваний аргумент ключового слова 'pk' django - django, django-views

__init __ () отримав несподіваний аргумент ключового слова 'pk' django - django, django-views

Я отримую вищезгадану помилку, коли дзвоню у користувацький спосіб перегляду,

#views.py

class MyEntryAdmin(admin.ModelAdmin):
review_template = "admin/polls/myentry/review.html"

def get_urls(self):
urls = super(MyEntryAdmin, self).get_urls()
my_urls = patterns("",
(r"d+/review/$", self.admin_site.admin_view(self.review)),
)
return my_urls + urls

def review(self, request, id):
entry = MyEntry.objects.get(pk=id)

return render_to_response(self.review_template, {
"title": "Review entry: %s" % entry.title,
"entry": entry,
"opts": self.model._meta,
"root_path": self.admin_site.root_path,
}, context_instance=RequestContext(request))

admin.site.register(MyEntry, MyEntryAdmin)

#urls.py
urlpatterns = patterns("polls.views"
url(r"^myentry/(?P<pk>d+)/review/$", "MyEntryAdmin", name="review")
)

Коли я дзвоню по URL http://localhost:8000/admin/polls/myentry/1/review/ Я отримую помилку

__init__() got an unexpected keyword argument "pk"

Traceback:
Environment:
Request Method: GET
Request URL: `http://localhost:8000/admin/polls/myentry/1/review/`

Django Version: 1.6.2
Python Version: 2.7.5
Installed Applications:
("django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"polls")
Installed Middleware:
("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 "/home/sun1/projectFolder/myenv/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py" in get_response
114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /admin/polls/myentry/1/review/
Exception Value: __init__() got an unexpected keyword argument "pk"

Відповіді:

0 для відповіді № 1

Ви не використовуєте свій клас ModelAdmin як місце призначення шаблону URL-адреси. Клас ModelAdmin зареєстрований у вашого наявного адміністратора, тому його get_urls метод викликається, і відповідні URL-адреси додаються до типових адміністраторів.

Видаліть цей рядок з urls.py і він повинен працювати.