Cómo enviar datos a Updateview haciendo uso de javascript (Django 1.5.X)

376 views
Skip to first unread message

Ariel Vázquez Riverón

unread,
Jun 17, 2013, 2:17:05 PM6/17/13
to djan...@googlegroups.com
Hola:

Necesito enviar los datos de una plantilla hacia la vista genérica UpdateView haciendo uso de javascript o del método POST. Django sends me an error:  "Generic detail view MatterUpdateView must be called with either an object pk or a slug."

Creo que el problema existe porque el método as_view() no recibe los datos correctamente.

Code:

HTML
<form id="form-edit" action="/manage_p1/update/" method="get"  >
      <input  id="input-pk" type="hidden" value="0" name="pk">                       
</form>

JS
$('.icon-edit').click( function() {
        $object_id = $(this).parents().eq(0).attr('id');
        $('#form-edit #input-pk').attr('value', $object_id);
        $('#form-edit').submit();
})

URL.PY

...
url(r'^manage_p1/update/', MatterUpdateView.as_view()), 
...

Conozco la solución que aparece en la documentación de django, pero esta no resuelve el problema.  En Gjango 1.4.X yo redefino la función "dispatch" para darle solución, pero la misma solución no funciona para el 1.5.

Ejemplo de la solución:
class MatterUpdateView( UpdateView ):
    template_name = 'object_add.html'
    success_url = '/manage_p1/list/'
    model = Matter
    form_class = MatterForm

    def dispatch( self, request, *args, **kwargs ):
        if not kwargs :           
                    kwargs['pk'] = request.GET.get('pk', '')
                    if not bool( kwargs['pk'] ):               
                        kwargs['pk'] = request.POST.get('pk', '')

Me he leido la documentación del 1.5 y los cambios realizados, y no veo el porqué no funciona igual que en el 1.4.X.
Si alguien conoce alguna posible solución le agradecería que me respondiese, estoy migrando un proyecto, esta situación me tiene estancado.

Saludos cordiales a todo el grupo.

Lucho Flores

unread,
Jun 25, 2013, 11:27:32 AM6/25/13
to djan...@googlegroups.com
En la url no estás pasando un id o pk para que te actualice el objeto que necesitas, deberías poner algo como: 
url(r'^manage_p1/(?P<pk>\d+)/update/', MatterUpdateView.as_view()),
También debes asegurarte que cuando envíes por ajax los datos a actualizar le procporciones el id del objeto que deseas actualizar, ya sea por un slug o por el método get_absolute_url(), o por algún método tuyo que envíe el objeto que deseas actualizar

Andres Vargas

unread,
Jun 27, 2013, 6:52:58 PM6/27/13
to djan...@googlegroups.com
checa usando django-ajax http://www.dajaxproject.com/



--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Andres Vargas
www.zodman.com.mx
Reply all
Reply to author
Forward
0 new messages