Tengo una función que muestra títulos de 3 modelos diferentes en Django. Quiero agregar un enlace a cada título para que redirija al usuario a la URL adecuada.
La función search_autocomplete devuelve todos los títulos correctamente en 1 lista, sin embargo, tengo problemas con la creación de la dirección URL en el archivo js. Estoy usando esta biblioteca para crear una lista de títulos.
Digamos que el usuario pone "python es increíble" en la barra de búsqueda. La dirección URL debe contener rootURl/modelUrl/slug .
http://127.0.0.1:8000/article/python-is-amazinghttp://127.0.0.1:8000/qa/python-is-amazinghttp://127.0.0.1:8000/video/python-is-amazingEl segundo problema es que quiero mostrar una lista de títulos en la lista de autocompletar, pero necesito pasar el campo slug a la dirección URL. ¿Cómo puedo hacer eso?
archivo js
//root URL const rootUrl = 'http://127.0.0.1:8000' //models URLs const articleURL = 'article' const qaURL = 'qa' const videoURL = 'video' new Autocomplete('#autocomplete', { search: input => { const url = `/search/?title=${input}` return new Promise(resolve => { if (input.length < 3) { return resolve([]) } fetch(url) .then(response => response.json()) .then(data => { resolve(data.data) }) }) }, onSubmit: result => { window.open(`${rootbUrl}/${qaURL}/${encodeURI(result)}`) }, autoSelect: true })vistas.py
def search_autocomplete(request): query = request.GET.get('title') search_list = [] if query: article_list = Article.objects.search_one(query=query).order_by('-publish') qa_list = QA.objects.search_one(query=query).order_by('-publish') video_list = Video.objects.search_one(query=query).order_by('-publish') search_list = map(lambda x: x.title, chain(article_list, qa_list, video_list)) return JsonResponse({'status':200, 'data': list(search_list)})