Foros del Web » Programando para Internet » Python »

borrar registro

Estas en el tema de borrar registro en el foro de Python en Foros del Web. Tengo un problema parecido al de un compañero eliminando un campo: Supongo que resultara basico, pero no se resolverlo. Los modelos son los siguientes, Experimentos, ...
  #1 (permalink)  
Antiguo 07/11/2011, 14:09
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
borrar registro

Tengo un problema parecido al de un compañero eliminando un campo:
Supongo que resultara basico, pero no se resolverlo.

Los modelos son los siguientes, Experimentos, y documentos
Código Python:
Ver original
  1. class Proyectos(models.Model):
  2.     titulo=models.CharField(max_length=100)
  3.     creacion=models.DateField(default=datetime.datetime.now)
  4.     estado=models.CharField(max_length=30)
  5.     objetivo=models.TextField(null=True)
  6.     conclusion=models.TextField(null=True)
  7.     porcentaje=models.IntegerField()
  8.     modificado=models.DateTimeField(default=datetime.datetime.now)
  9.     autor=models.IntegerField()
  10.     usuarios=models.ManyToManyField(User)
  11.     proyectos_rel=models.ManyToManyField("self")
  12.     documentos=models.ManyToManyField(Documentos)
  13.     class Meta:
  14.         db_table='Proyectos'
  15.     def __unicode__(self):
  16.         return self.titulo

Código Python:
Ver original
  1. class Experimentos(models.Model):
  2.     titulo=models.CharField(max_length=100)
  3.     creacion=models.DateField(default=datetime.datetime.now)
  4.     estado=models.CharField(max_length=30)
  5.     objetivo=models.TextField(null=True)
  6.     conclusion=models.TextField(null=True)
  7.     porcentaje=models.IntegerField()
  8.     modificado=models.DateTimeField(default=datetime.datetime.now)
  9.     autor=models.IntegerField()
  10.     proyecto=models.ForeignKey(Proyectos)
  11.     usuarios=models.ManyToManyField(User)
  12.     experimentos=models.ManyToManyField("self")
  13.     documentos=models.ManyToManyField(Documentos)
  14.     class Meta:
  15.         db_table='Experimentos'

Intento resolver la llamada a un script de borrado con lo siguiente:

Código Python:
Ver original
  1. datos=Proyectos.objects.get(id=identificador)
  2. if request.POST.get('experimentosDelete','')!='':
  3.     for i in request.POST.getlist('experimentosDelete'):
  4.         experimento=Experimentos.objects.get(id=i,proyecto=datos)
  5.         experimento.datos=[]
Esto no hace nada.....
Si en lugar de esto hago: #experimento.delete() se borra el Experimento totalmente, yo lo que quiero es borrar solo el experimento que selecciono, de los que hacen referencia a mi proyecto.
Muchas gracias por las respuestas, un saludo compañeros.

Última edición por joseosuna2; 08/11/2011 a las 05:01
  #2 (permalink)  
Antiguo 08/11/2011, 10:02
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: borrar registro

¿No sería más sencillo borrar los datos? Según entiendo querés borrar cierto conjunto de datos relacionados con el experimento, si es así supongo que

datos.delete()

haría lo que querés.


Saludos.
  #3 (permalink)  
Antiguo 08/11/2011, 12:39
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: borrar registro

Si hago:
Código Python:
Ver original
  1. if request.POST.get('experimentosDelete','')!='':
  2.                         for i in request.POST.getlist('experimentosDelete'):
  3.                         experimento=Experimentos.objects.get(id=i,proyecto=datos)
  4.                             experimento.delete()
Me borra el experimento totalmente..
Si hago
Código Python:
Ver original
  1. datos=Proyectos.objects.get(id=identificador)
  2. if request.POST.get('experimentosDelete','')!='':
  3.                         for i in request.POST.getlist('experimentosDelete'):
  4.                             dato.delete()
Me borra todos el proyecto actual.....
Un Proyecto, puede contener uno o varios experimentos, no se como hacer para borrar un experimento, que esta relacionado con un proyecto.....
gracias de todas formas.
  #4 (permalink)  
Antiguo 08/11/2011, 14:19
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: borrar registro

Había entendido la relación al revés, disculpa.
Pero ahora no entiendo cuál es el problema, ¿cuál es la diferencia entre experimentos.delete() y lo que querés lograr? da todos los detalles posibles :)
  #5 (permalink)  
Antiguo 09/11/2011, 09:01
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: borrar registro

Mira en mi caso un Proyecto puede tener relacionados varios Experimentos("Exp1""Exp2""Exp3"), por ejemplo.
Yo quiero eliminar una de estas relaciones, que mi Proyecto solo contenga los ("Exp1""Exp2")
Si hago lo siguiente, desaparece de la relación, correcto, pero porque lo estoy eliminando totalmente el "Exp3" yo no quiero borrar ese experimento, si no eliminar el vinculo que tiene a mi proyecto.
Que no es lo que quiero.

Código Python:
Ver original
  1. if request.POST.get('experimentosDelete','')!='':
  2.                         for i in request.POST.getlist('experimentosDelete'):
  3.                             experimento=Experimentos.objects.get(id=i,proyecto=datos)
  4.                             experimento.delete()


No se si me explico bien...gracias por la preocupacion de todas formas.
El caso de añadir, lo he resuelto ahora mismo xD, de la siguiente manera:

Código Python:
Ver original
  1. if request.POST.get('experimentos','')!='':
  2.                         for i in request.POST.getlist('experimentos'):
  3.                             experimento=Experimentos.objects.get(id=i)
  4.                             experimento.proyecto=datos
  5.                             experimento.save()

Tras una llamada a una función en .js, lo añado de esta manera xD

Última edición por joseosuna2; 09/11/2011 a las 11:08
  #6 (permalink)  
Antiguo 09/11/2011, 15:36
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: borrar registro

ahora sí se entiende, es la primera vez que escribís que querés borrar la relación, y no el objeto
Lo que estás buscando (creo) es .remove(): https://docs.djangoproject.com/en/de...Manager.remove
  #7 (permalink)  
Antiguo 10/11/2011, 01:39
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: borrar registro

Gracias AlvaroG, voy a echar un vistazo a ver si termino con esto xD,
  #8 (permalink)  
Antiguo 10/11/2011, 07:59
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: borrar registro

ya me da algo xD, he hecho lo siguiente:

Código Python:
Ver original
  1. if request.POST.get('usuariosDelete','')!='':
  2.                         for i in request.POST.getlist('usuarios'):
  3.                             usuario=User.objects.get(id=i)
  4.                             datos.usuarios.remove(usuario)
Y no hace nada...sigue el usuario apareciendo......
Seguro que se me esta pasando algo, pero no tengo ni idea ya de que puede ser...
  #9 (permalink)  
Antiguo 29/11/2011, 08:47
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: borrar registro

Finalmente lo he resuelto con
Código Python:
Ver original
  1. if request.POST.get('usuariosDelete','')!='':
  2.                         datos.usuarios.remove(request.POST.get('usuariosDelete'))

Etiquetas: registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:14.