Добавление дополнительной кнопки к одному объекту в админке django - PullRequest
3 голосов
/ 06 октября 2010

Я надеюсь, что об этом не спрашивали, и я просто пропустил это, но я искал кучу и ничего не смог найти.

Я добавляю дополнительную кнопку сохранения к администратору django при добавлении или изменении объекта. Делать это довольно легко. Я просто переопределил submit_line.html, чтобы добавить дополнительную кнопку, а затем переопределил функцию save_model, чтобы проверить имя этой кнопки. Работает отлично.

Моя проблема в том, что мне нужно, чтобы эта кнопка отображалась только для одного конкретного объекта ... не для всех. Я заглянул в change_form.html, чтобы узнать, как он знает, с каким объектом он имеет дело, и нашел {{opts.module_name}}, но, похоже, он недоступен в submit_line.html. Я попытался распечатать это, и ничто не обнаружилось.

Я также думал о взломе save_as (не очень изящно, но мне не особо важен этот конкретный проект), но эта кнопка отображается только при изменении ... не при добавлении, так что это не сработает.

Кто-нибудь знает, как определить, с каким объектом, с которым я работаю, в submit_line.html? Или любой другой способ сделать это?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 09 января 2011

Вы можете сделать это, используя javascript следующим образом:

/ static / js / полезно.js

$(document).ready(function ($) {
    $('input[name="_addanother"]').before('<input type="submit" name="_use" value="Useful functionality"/>');
});

и в свой ModelAdmin добавить:

class MyModelAdmin(admin.ModelAdmin):
     class Media:
        js = ('/static/js/useful.js',)
0 голосов
/ 06 октября 2010

Вы должны иметь доступ к исходному объекту в контексте change_view через original.Например, {{ original.id }} должен напечатать свой идентификатор!

...