CM Seapine - Кросс-платформенное административное управление проблемы и управление версиями
Есть несколько способов сделать это. Вы уже упоминали некоторые из них сами.
Можно переопределить шаблон для страницы сохранения в вашем админке и добавить в шаблон необходимый код. Необходимые носители, Javascript, Css и т. Д. Могут быть добавлены с помощью внутреннего класса Media в вашем классе ModelAdmin. Этот медиа-класс имеет два разных атрибута: кортеж с таблицами стилей css и кортеж с файлами javascript
Я думаю, что лучшим вариантом в этом случае будет виджет настраиваемого выбора адреса, как вы уже упоминали в своем списке способы, которыми вы не хотите этого делать.
В первую очередь речь идет о разметке на стороне клиента и клиентской -сайд 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
}