Добавление пользовательского JS к django администраторскому полю

CM Seapine - Кросс-платформенное административное управление проблемы и управление версиями

http://www.seapine.com

8
задан tstenner 29 November 2009 в 19:07
поделиться

2 ответа

Есть несколько способов сделать это. Вы уже упоминали некоторые из них сами.

Можно переопределить шаблон для страницы сохранения в вашем админке и добавить в шаблон необходимый код. Необходимые носители, Javascript, Css и т. Д. Могут быть добавлены с помощью внутреннего класса Media в вашем классе ModelAdmin. Этот медиа-класс имеет два разных атрибута: кортеж с таблицами стилей css и кортеж с файлами javascript

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

4
ответ дан 5 December 2019 в 06:53
поделиться

В первую очередь речь идет о разметке на стороне клиента и клиентской -сайд javascript. В таком случае может показаться, что правильным выбором будет использование оборудования, предназначенного для их обработки. Я также рекомендую создать собственный виджет администратора. Я сам использовал эту схему. В зависимости от размера разметки на стороне клиента вы даже можете использовать шаблон Django для рендеринга виджета.

В качестве альтернативы вы можете написать ненавязчивый javascript для повторного рендеринга этой области страницы после страница загружена. В этом методе вы можете просто включить этот медиафайл javascript с классом Media: в модель администратора.

Это больше похоже на псевдокод, чем на что-либо еще, но дает представление:

admin.py

class AppointmentAdmin(admin.ModelAdmin):
    # ...

    class Media:
        from django.conf import settings
        media_url = getattr(settings, 'MEDIA_URL', '/media')
        js = [ media_url+'/admin/long-lat-render.js', ]

long-lat-render.js

// Written for jQuery
$(function(){
    // on page load...

    $('#_LongitudeTag').html('');

    var getCoordButton = $('<button id="get-coords"></button>');
    $('#_LongitudeTag').append(getCoordButton);

    addGMap($('#_LongitudeTag').get(0));
});

function addGMap(element) {
   // do whatevers
}
20
ответ дан 5 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: