Повторно использовать пароль для смены пользователя - PullRequest
1 голос
/ 23 марта 2012

У меня есть следующий подкласс:

class UserProfile(User):
    user = models.OneToOneField(User, parent_link=True)

И UserProfileAdmin:

class UserProfileAdmin(admin.ModelAdmin):
    # stuff
admin.site.register(UserProfile, UserProfileAdmin)

Этот администратор отображает ссылку для смены пароля /admin/customer/userprofile/1548/password/ под паролем. Но я получаю следующую ошибку:

invalid literal for int() with base 10: '1548/password'

Я хочу использовать ту же форму смены пароля, что и в auth.User, и после внесения изменений я хочу быть перенаправлен на UserProfileAdmin. Как я могу это сделать?

1 Ответ

3 голосов
/ 23 марта 2012

Это ожидаемое поведение, потому что:

/admin/customer/userprofile/1548/password/

Хочет отобразить форму изменения для userprofile с идентификатором '1548 / пароль'.

Расширение класса User не является способомхранить дополнительные данные на пользователя.Прочитайте документацию по Хранение дополнительной информации о пользователях для получения инструкций о том, как сделать это правильно.

При этом вы можете, если хотите, чтобы этот URL открывал страницу смены пароля администратора,Вы можете сделать перенаправление следующим образом:

# put **before** include(admin.site.urls)
url(r'/admin/customer/userprofile/(?P<id>\d+)/password/$', 'views.redirect_to_password'),

И в views.py:

from django import shortcuts

def redirect_to_password(request, id):
    return shortcuts.redirect('/admin/auth/user/%s/password/' % id)

Если вы также хотите перенаправить / admin / auth / user / 1234 в / admin/ customer / userprofile / 1234, тогда вы можете добавить это:

url(r'/admin/auth/user/(?P<id>\d+)/$', 'views.redirect_to_customer_changeform'),

Будет работать с аналогичным представлением:

from django import shortcuts

def redirect_to_customer_changeform(request, id):
    return shortcuts.redirect('/admin/customer/userprofile/%s/' % id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...