entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

crear un filtro para django usando ajax o websockect???

vi una respuesta del usuario "white" (2015) al respecto, pero me gustaría volver a tomar el tema y que pueda dar un ejemplo bien detallado de como lograr el mismo efecto que se hace en html y php de ir eliminado filas de una tabla que trae datos de una base a medida que se typea en la caja de texto. pero para un modelo cualquiera diferente a usuarios es decir, una tabla con tres o mas campos. He estado investigando de esto y todavía no he conseguido una mejor manera de hacerlo de como lo que había propuesto "white", pero me perdí en los pasos y por eso le pido pueda repetir pero mas detalladamente el desarrollo de su solucion y cambiando el modelo de usuarios por cualquier otro modelo. Por otra parte he visto que aparece como solución el tema "WEBSOCKECT" y tambien de pronto sea una buena forma de solucionar, yo estoy tratando de resolver, pero pido ayuda porque se me ha ido enredando mi asunto.

0voto

Peter comentado

Comparte tu código y el problema que tienes con el.

Saludos.

1voto

maxgonpe comentado

veré si logro explicarme bien. Aca, esta la vista, la url y el codigo que crea la tabla en la plantilla
le deje la caja de texto que busca en la tabla (lo que busco...). el asunto es que cuando uno
usa una tabla en html y le pone una caja de texto que se use como filtro y mediante
javascript consulta una funcion se hara el filtrado en el navegador sin ningun problema, a medida
que voy pulsando caracteres las filas se iran borrando hasta quedarme con las que cumplen con
el criterio de filtro y lo que es muy poderoso es que esto me va tomando en cuenta todas las
columnnas (campos: id, nombre, apellido, valor x, fecha x, etc) de la tabla.

ojo: esto funciona, solo si los datos son estaticos (estan escritos en la propia pagina html)

pero si los datos vienen de la vista (backend) y se muestran en el navegador ya no me sirve
o no funciona el buscador en javacript del lado del navegador.

ENTONCES , NO HE PODIDO HACER UN FILTRO QUE ME FUNCIONE IGUAL QUE EL MENCIONADO PERO QUE
HAGA EL FILTRO CON LOS DATOS QUE LANZA LA VISTA DESDE LA BASE DE DATOS

si mi tabla tiene 20 o menos filas , es facil ubicar los registros, pero si estos aumentan a cientos,
entonces lo ideal es un filtro que funcione en TIEMPO REAL

he visto algunas soluciones , pero todas son muy complejas y hay que apretar el boton para mandar a hacer la
busqueda del filtro. Estoy pidiendo ayuda para que me guien en la construccion del filtro sin tener que
pulsar el boton de busqueda, (este projecto en mi maquina lo inicie con python3, django 1.11.2 y otras librerias , pero
en concreto para esta funcion no tengo nada instalado)

mi vista como clase en el archivo views.py de mi app

class GeneralList(LoginRequiredMixin, ListView):
    login_url = '/'
    redirect_field_name = '/'
    model = General
    template_name = 'general_list.html'
    #paginate_by = 20
    print("printing a message...")

mi url en el archivo urls.py de mi app

 url(r'^general/', GeneralList.as_view(), name='general_listar'),

mi archivo htm dentro del la carpeta "templates" de mi app

{% extends "base.html" %}

{% block content %}
<head>
    <script type="text/javascript">
      $(document).ready(function() 
    { 
        $("#tablag").tablesorter(); 
    } 
);
    </script>       

</head>
<body>
 <div class="container">
  <div class ="table-responsive"> 
   <div class="tabla">
   <table id="tablag" class="tablesorter table table-striped table-bordered table-hover table-condensed"> 

   <thead>
<div id="container">
    <div class="search">
        <div class="searchbox">
            <label>Buscar ...:</label>
            <span class="info">(Puede ser un Id o Nombre o item General)</span>
            <input id="search_input" type="text" name="q">
            {% csrf_token %}
        </div>
        <div class="results">
            <h1 class="error"></h1>
            <div class="wrapper"></div>
        </div>
    </div>
</div>
         <h2 >GENERAL: <small>Partidas, Habitaciones y/o Espacios </small><a class="btn btn-primary btn-xs" href="{%  url 'general_crear'  %}">Nueva</a></h2>

         <tr>

        <th><b class="text-info">Id</b></th>
        <th><b class="text-info">Nombre</b></th>
                <th><b class="text-info">Item General</b></th>
        <th><b class="text-info">Eliminar</b></th>

    </tr>

   </thead> 
<tbody>
{% if object_list %}

{% for generales in object_list %}
<tr>
<td> {{generales.id_general}}</td>
<td> {{generales.general}} </td>
<td> {{generales.item_general}}</td>
<td> <a class="btn btn-danger btn-xs" href="{% url 'general_borrar' generales.id_general  %}">Eliminar</a></td>
</tr>
{% endfor %}
{% else %}
<tr>
      No hay Propiedades que mostrar, Adicione una. Pulsando <a href="#">Aqui</a>.
{% endif %}
</tr>
</tbody>
</table>
</div>
</div>
</div>

</body>

{% endblock %}

1 Respuesta

0voto

maxgonpe Puntos170

Buenas a todos: ya conseguí la respuesta y básicamente es que tengo que plantear el problema desde otra forma para resolverlo. como dije antes andaba en busca de una solución, por decirlo de algún modo "un tipo de truco" para que mis vistas que mandan los registros a mi template (html) funcionaran desde el backend con algún tipo de combinación en el fronted del lado del navegador y de eso modo, no darme tanta mala vida y colocar los filtros a mis tablas, y aprovechar todo lo que tenía hecho, pero no conseguí un camino por ahí. La solución es que el filtro definitivamente lo puedo hacer que trabaje igual como lo hace html en navegador, pero totalmente en backend (funciona y da el mismo efecto), pero para esto debo incluir "django rest_framework' y construir y mostrar mis tablas con la ayuda que me da esta api.

Esto lo pude ver buscando en youtube y di con un video de un chino, que mostraba el uso de la api, y entre lo que mostraba "eureka" el dichoso filtro funciando a las mil maravillas, baje el codigo de github y estoy estudiando para extraer lo que necesito e implementarlo en mi proyecto. Dejo los enlaces aquí, para quienes necesiten una solución similar:

https://youtu.be/E0Pf5Ci-vGw

https://github.com/twtrubiks/django-rest-framework-tutorial

también estoy abierto a que si alguien muestre otro camino, y lo quiera compartir para estudiarlo.

Gracias....

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta