ФорумПрограммированиеPythonDjango → Как добавить действие с промежуточной страницей для кнопкок в админке?

Как добавить действие с промежуточной страницей для кнопкок в админке?

  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 2 августа 2012 г. 1:26

    Добрый!

    Понадобилось добавить кнопки для каждой строки в таблице для модели в админке, сделал это так:


    class MyAdmin(admin.ModelAdmin)
    list_display=('name', 'button')



    def button(self, obj):
    return '<button …'
    button.short_description = 'Action'
    button.allow_tags = True


    Вопрос в том, как теперь добавить для этих кнопок действие с промежуточной страницей?
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 августа 2012 г. 1:33, спустя 7 минут 36 секунд

    Сделать прокси модель, зарегистрировать для нее еще одну админку, по нажатию кнопки перейти на нее.
    Спустя 32 сек.
    Если я правильно понял вопрос …
  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 2 августа 2012 г. 1:58, спустя 24 минуты 12 секунд

    Сделать прокси модель, зарегистрировать для нее еще одну админку, по нажатию кнопки перейти на нее.
    Спустя 32 секунды добавил
    Если я правильно понял вопрос …


    Уточню вопрос…
    Есть 2 модели допустим с товарами и уцененными товарами. В админке при просмотре таблицы товаров в каждой строке с товаром есть кнопка "перенести в уцененные товары" и при нажатии этой кнопки, предполагается, что пользователя перенаправляет на промежуточную страницу, где он правит какие-либо свойства данного товара и после редактирования, товар переносится в другую таблицу "уцененные товары".

    Вопрос в том как привязать к этим кнопками действие с промежуточной страницей.
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 2 августа 2012 г. 1:58, спустя 20 секунд

    Собственно также, как и обычные вьюшки. В чем проблема? Пишешь urls, views, шаблон наследуешь от admin/base_site.html
  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 2 августа 2012 г. 2:28, спустя 29 минут 45 секунд


    Собственно также, как и обычные вьюшки. В чем проблема? Пишешь urls, views, шаблон наследуешь от admin/base_site.html


    Спасибо, за ответ! Проблема в том, что я не понимаю куда пользователя должно отсылать после нажатия кнопки находящейся рядом с товаром… Можно ли привести пример?
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 августа 2012 г. 2:34, спустя 5 минут 57 секунд


    Есть 2 модели допустим с товарами и уцененными товарами. В админке при просмотре таблицы товаров в каждой строке с товаром есть кнопка "перенести в уцененные товары" и при нажатии этой кнопки, предполагается, что пользователя перенаправляет на промежуточную страницу, где он правит какие-либо свойства данного товара и после редактирования, товар переносится в другую таблицу "уцененные товары".
    Мне кажется тут сам Бог велел сделать для товара сделать прокси-модель (подготовка к уценению), сделать для нее админку именно в том сочетании полей, которое удобно для правки таких товаров, кнопки залинковать на эту админку на страницу редактирования, в ней перекрыть save_model в котором организовать перенос товара. Ну где-то так. С редиректами еще придется наверно похимичить. Чем это не устраивает?
  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 2 августа 2012 г. 3:16, спустя 42 минуты 11 секунд

    Мне кажется тут сам Бог велел сделать для товара сделать прокси-модель (подготовка к уценению), сделать для нее админку именно в том сочетании полей, которое удобно для правки таких товаров, кнопки залинковать на эту админку на страницу редактирования, в ней перекрыть save_model в котором организовать перенос товара. Ну где-то так. С редиректами еще придется наверно похимичить. Чем это не устраивает?


    Спасибо, посмотрю в сторону proxy модели, смущает, что раз можно редактировать товар через форму "подготовка к уценению", то можно через нее и создать уцененный товар…
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 августа 2012 г. 3:19, спустя 2 минуты 55 секунд

    В прокси админке:
        
    def has_delete_permission(self, request):
    return False

    def has_add_permission(self, request):
    return False
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 2 августа 2012 г. 3:54, спустя 35 минут 29 секунд

    В общем случае, можно/нужно в админ-классе переопределить get_urls (не забываем, что дополняем родительский get_urls), добавить свои методы-вьюхи.
    Пример из django-cms:
    класс https://github.com/divio/django-cms/blob/develop/cms/admin/pageadmin.py#L141
    его get_urls: https://github.com/divio/django-cms/blob/develop/cms/admin/pageadmin.py#L186
    ну и какой-то вью: https://github.com/divio/django-cms/blob/develop/cms/admin/pageadmin.py#L817

    Помните: admin.ModelAdmin это полноценный апп вокруг модели в него уже включены urls и views
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 2 августа 2012 г. 4:03, спустя 9 минут 7 секунд

    Но в случае ТС, ещё проще посмотреть, как сделано изменение пароля для пользователей:
    https://github.com/django/django/blob/master/django/contrib/auth/admin.py
  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 2 августа 2012 г. 4:24, спустя 20 минут 13 секунд

    AlexB
    Почитал поподробней про proxy-модели, получается, что proxy-модель должна быть с такими же полями как и ее родитель, а мне это не подходит, так как для "уценненных товаров" добавляются два поля и нужно наследовать multi-table, добавлять поля, потом уже наследовать как proxy, при этом для каждой модели добавляется таблица.

    mathete
    Спасибо, посмотрю!

  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 августа 2012 г. 6:12, спустя 1 час 48 минут 26 секунд


    Почитал поподробней про proxy-модели, получается, что proxy-модель должна быть с такими же полями как и ее родитель, а мне это не подходит, так как для "уценненных товаров" добавляются два поля
    С админкой можно связать форму, в которой описать доп. поля. чтобы получить интерфейс.

    А вообще, я не знаю всей задачи, но мне кажется что где-то архитектурная ошибка. Товары и уцененные товары должна быть одна модель, у которой просто флажок "уценен". Или отдельная модель с FK на товары, где сведения об уценении. А передвигать запись из таблицы в таблицу как-то некошерно, ИМХО …
  • kwargs

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 августа 2012 г. 5:38, спустя 1 день 23 часа 26 минут



    Почитал поподробней про proxy-модели, получается, что proxy-модель должна быть с такими же полями как и ее родитель, а мне это не подходит, так как для "уценненных товаров" добавляются два поля
    С админкой можно связать форму, в которой описать доп. поля. чтобы получить интерфейс.

    А вообще, я не знаю всей задачи, но мне кажется что где-то архитектурная ошибка. Товары и уцененные товары должна быть одна модель, у которой просто флажок "уценен". Или отдельная модель с FK на товары, где сведения об уценении. А передвигать запись из таблицы в таблицу как-то некошерно, ИМХО …


    Собственно, я привел пример с "товарами" и "уцененными товарами", так как мне показалось не важным, с какими данными оперировать для решения озвученного вопроса, а вобще в самом приложении речь идет о патентах, заявках на патенты и т.п. В этом приложении флажком патент/заявка на патент не обойтись.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!