你的問題似乎與自定義Django管理網址相關。 首先,更新您的MapAdmin提供一個端點搜索位置
from django.contrib import admin
from django.http import JsonResponse
class MapAdmin(admin.ModelAdmin):
def get_urls(self):
admin_view = self.admin_site.admin_view
info = self.model._meta.app_label, self.model._meta.model_name
urls = [
url(r'^search_location$', admin_view(self.search_location), name=("%s_%s_search_location" % (info))),
]
return urls + super(VideoAdmin, self).get_urls()
def search_location(self, request, *args, **kwargs):
map = request.GET.get('map')
# Do something with map param to get location.
# Set safe=False if location_data is an array.
return JsonResponse(["""..location_data"""], safe=False)
接下來,在你的模板文件中的某個地方,定義URL指向搜索位置的端點。並且一旦地圖改變,使用該URL獲取位置數據 。
var searchLocationUrl = "{% url 'admin:appName_mapModel_search_location' %}";
我想我很困惑,因爲我沒有模板文件。我只在管理員工作。我有我的.js文件,我正在做ajax調用。我怎樣才能得到我的.js文件中的Ajax網址?此外,我不明白的信息變量,爲什麼這是必要的網址? – pinksharpii
'info',是一個使URL的名稱變得清晰的前綴,例如你的應用是'CMS',你的模型是'Map',url名變成'admin:cms_map_search_location',我不喜歡硬分配字符串所以我用'info'代替。 我不確定你的項目中的管理網址前綴,但我想你提到的ajax網址是: '/ admin/cms/map/search_location' –
謝謝,我終於弄清楚了正確的URL 。並使用map_object = serializers.serialize('json',Map.objects.filter(id = map_id))獲取並返回我的地圖對象。 – pinksharpii