Как сделать сетку с кнопками в админке Django и передать кнопке идентификатор записи? - PullRequest
0 голосов
/ 19 января 2011

Проще всего сказать с картинками.

alt text

Я не уверен, как создать 2-й столбец с помощью кнопки. Тогда как добавить идентификатор, чтобы кнопка запускала код для конкретной записи.

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Хотя я думаю, что действия лучше, если вам действительно нужна кнопка, вот самый простой способ:

Определите функцию, которая возвращает кнопку HTML в вашей модели. То, как представление обрабатывает это действие кнопки, является вашим вызовом и точно так же, как и любое другое представление.

Одной из идей является ссылка на определенный URL-адрес, такой как /restart/3/ (если эта кнопка выполняет безопасную операцию) или размещение элементов формы в каждой кнопке, которые ВЫСТУПАЮТ в отдельное представление с <input type="hidden" name="id" value="%(the_id)s" />

# models.py
    def restart_button(self):
        return '<a href="restart/%s">Restart Me</a>' % (self.id) 
    restart_button.allow_tags = True

# admin.py
list_display = ('restart_button', ...)

def get_urls(self):
    # use get_urls for easy adding of views to the admin
    urls = super(MyModelAdmin, self).get_urls()
    my_urls = patterns('',
        (r'^restart/(?P<id>\d)$', self.restart)
    )
    return my_urls + urls

def restart(self, request, id):
    MyModel.objects.get(id=id).restart()
    request.user.message_set.create(message="%s restarted." % id)
    return http.HttpResponseRedirect('../')
1 голос
/ 19 января 2011

Добавление кнопки будет относительно большой работой по сравнению с рекомендуемым решением для такого рода вещей: добавление действия администратора , которое позволит вам отметить нужные объекты действовать, затем выберите, что делать из выпадающего меню Action:

...