Foros del Web » Programando para Internet » Python »

Borrado Campo

Estas en el tema de Borrado Campo en el foro de Python en Foros del Web. Buenas, al fin voy a terminar el proyecto que comenze y en el que al final me esta hasta gustando esto de Django xD el ...
  #1 (permalink)  
Antiguo 29/11/2011, 09:04
 
Fecha de Ingreso: octubre-2011
Ubicación: Alcobendas
Mensajes: 33
Antigüedad: 12 años, 6 meses
Puntos: 1
Borrado Campo

Buenas, al fin voy a terminar el proyecto que comenze y en el que al final me esta hasta gustando esto de Django xD el problema que tengo es el borrado de un campo.
Tengo las siguientes tablas.

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'

lo que deseo es eliminar solo uno de los Experimentos que puede contener un Proyecto
lo intento asi:

Código Python:
Ver original
  1. if request.POST.get('experimentosDelete','')!='':
  2.                          for i in request.POST.getlist('experimentosDelete'):
  3.                             exp=Experimentos.objects.get(proyecto=datos,id=i)
  4.                             exp.experimentos.remove(request.POST.get('experimentosDelete'))
El resultado es que no hace nada.......y de otras formas elimino objetos completos, y no la relacion. No se como hacerlo.
Agradezco enormemente su ayuda en todas las dudas, de paso sea dicho.
  #2 (permalink)  
Antiguo 03/12/2011, 12:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Borrado Campo

Esto es por la forma en que tienes modelado tu base datos.

Si quieres eliminar relaciones entonces primero tendrías que tener una relación.

Si no deseas cambiar demasiado tu base de datos entonces puedes poner como null la foreign key y tomar como null un experimento que no este "relacionado".

También puedes hacer una relación muchos a muchos y aplicarle un indice unique a una columna para formar eso de uno a muchos.

Etiquetas: borrado, django, dudas, formulario, campos
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 16:42.