Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Problema raro con save() y booleans

Estas en el tema de Problema raro con save() y booleans en el foro de Python en Foros del Web. Gente: Tengo un problema bien raro... cuando salvo un registro y coloco True en un campo bool todo sale OK pero cuando inteto hacer lo ...
  #1 (permalink)  
Antiguo 19/04/2014, 19:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Problema raro con save() y booleans

Gente:

Tengo un problema bien raro... cuando salvo un registro y coloco True en un campo bool todo sale OK pero cuando inteto hacer lo opuesto... NADA DE NADA

Código HTML:
## Models

class Posts(models.Model):
    autor = models.CharField(max_length = 30)
    titulo= models.CharField(max_length = 60)
    url   = models.CharField(max_length = 50)  # falta agregar manualmente
    texto = models.TextField()
    hidden= models.BooleanField()
    fecha = models.DateTimeField()

## Views

# delete
def posts_delete(request, id):    
    try:
        p = Posts.objects.get(id=id)
    except Posts.DoesNotExist:
        raise Http404

    if HARD_DELETE:
        p.delete()
    else:        
        p.deleted=True
        p.date_deleted = date.today()        
        p.save()    

    return HttpResponseRedirect('/posts' + '/list/deleted/' +id)

# restore 
def posts_undelete(request, id):  

    try:
        p = Posts.objects.get(id=id)
    except Posts.DoesNotExist:
        raise Http404

        p.deleted=False
        #p.date_deleted = None
        p.save()    

    return HttpResponseRedirect('/posts' + '/list/undeleted/' +id)

Deje la misma duda en StackFlow... no se si... de pronto me entienden mas de alla

http://stackoverflow.com/questions/2...work-sometimes
__________________
Salu2!
  #2 (permalink)  
Antiguo 19/04/2014, 19:46
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: Problema raro con save() y booleans

Como te dijeron en Stackoverflow tu modelo Posts no tienen campos: deleted ni date_deleted.

Tienes hidden y fecha, tal vez por eso no funciona.
  #3 (permalink)  
Antiguo 19/04/2014, 19:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Cierto..... soy un #&&@$&#* /// Gracias amigo!

EDIT: voy a volver a postear para que veas sigo con un problema amigo
__________________
Salu2!

Última edición por Italico76; 19/04/2014 a las 20:19
  #4 (permalink)  
Antiguo 19/04/2014, 20:22
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Compa @razpeitia : que pena pero.... todas sus observaciones estan bien ((muchas gracias)) pero veo me sigue fallando!!!!

Sera que puedo comprimirselo y enviarselo ? :)

Son pocas lineas... llevo unas horas con Python y Django ... apenas puedo escribir esos nombres sin equivocarme :D




---
Una de las cosas que me esta complicando es que uso Django 2.6 + Python 3.4 + Windows 64bits ...y si bien me funciona el MySQL con un conector que coloque en el FAQ aqui mismo...... no es compatible con Django !!! asi que me toca usar SQLite y no tengo ningun admin que me funcione decentemente....... la mayoria son en PHP y con PHP 5.4+ no funciona ninguno :(
__________________
Salu2!

Última edición por Italico76; 19/04/2014 a las 20:31
  #5 (permalink)  
Antiguo 19/04/2014, 21:18
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: Problema raro con save() y booleans

Claro puedes crear un repo en github (o lo que sea que se te haga mas conveniente) y pasarlo por aquí.
  #6 (permalink)  
Antiguo 19/04/2014, 22:18
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Gracias! publicado en

https://github.com/boctulus/hello
__________________
Salu2!

Última edición por Italico76; 19/04/2014 a las 22:28
  #7 (permalink)  
Antiguo 19/04/2014, 22:49
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: Problema raro con save() y booleans

Lo acabo de probar y a mi si me funciona. Recuerda que si añades o borras campos a los modelos vas a tener que hacer los cambios de esquema en tu base de datos de manera manual. O usar herramientas de migración para hacer eso.

Otra cosa, al listar los posts estas listando todos y no solo los que delete=False.
  #8 (permalink)  
Antiguo 19/04/2014, 23:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Cita:
Iniciado por razpeitia Ver Mensaje
Lo acabo de probar y a mi si me funciona. Recuerda que si añades o borras campos a los modelos vas a tener que hacer los cambios de esquema en tu base de datos de manera manual. O usar herramientas de migración para hacer eso.

Otra cosa, al listar los posts estas listando todos y no solo los que delete=False.
CIEERTOOO ..es que no se como sumar condiciones


En la vista "posts()" para evitar mostrar un post eliminado lo he intentado... como:

Código Python:
Ver original
  1. p = Posts.objects.get(pk=post_id).filter(deleted=False)

y

Código Python:
Ver original
  1. p = Posts.objects.get(pk=post_id).filter(Q(pk=post_id) & Q(deleted=False))

y claro deberia hacerlo en la que lista todos (posts_list) pero nada me funciona..... o no hace nada o da algun error


TAN RARO.. que a ti si te funciona.... creo me tocara pasarme a Django 1.7 porque la 1.6x no tiene migraciones y no me quiere tomar los cambios (por eso me la pase renombrando campos)

Tu que version usas de Django ?


[[[ DESDE YA... muy agradecido por todo tu apoyo... estoy en mis primeras horitas y me estoy dando la cabeza contra el piso seguido aun ]]
__________________
Salu2!
  #9 (permalink)  
Antiguo 19/04/2014, 23:24
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: Problema raro con save() y booleans

get te regresa un objeto de la instancia de tu modelo mientras que filter te regresa un queryset.

Entonces:
Código Python:
Ver original
  1. p = Posts.objects.get(pk=post_id).filter(deleted=False)

debería ser
Código Python:
Ver original
  1. p = Posts.objects.filter(deleted=False).get(pk=post_id)

o simplemente
Código Python:
Ver original
  1. p = Posts.objects.get(pk=post_id, deleted=False)
  #10 (permalink)  
Antiguo 19/04/2014, 23:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Compa:

Muchas gracias por la explicacion......... ahora te pregunto algo...... luego de "des-marcar" por ejemplo el registro #1 ... te lo muestra con "-- deleted*" ? o no ?


Cita:
Importante: registro 1 undeleted!

[Id = 1] un texto muy largo y aburrido -- deleted*
[Id = 3] Mal texto -- deleted*
[Id = 4] blaaaaaaaaaaaarg g44g4gt4 -- deleted*
[Id = 5] rgrjkjk dias malossssss
http://127.0.0.1:8000/undelete/1


Me estoy por enloquecer...... ya actualice a Django 1.71b y ejecute el comando de migraciones ... pero nadaaaaaaaaaaa
__________________
Salu2!
  #11 (permalink)  
Antiguo 20/04/2014, 09:39
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Y massssssssss cosas que me estan haciendo pensar que me hizo mal el toner que me fume el otro dia......


Demora mucho tiempo en tomar los cambios ... sino hago cambio y salvo minimo 2 veces consecutivas no veo diferencias en el flujo del programa!!!

Cita:
Cambio el valor False / True de SHOW_HIDDEN en views.py y no se refleja hasta que no lo cambio otras cosas en el codigo y luego devuelvo los cambios, salvando cada vez
Es como si estuviera cacheadoooooooo el bytecode ..... me &#*%%%


- Ademas.... se ve afectado por cambios en zonas que NADA tiene que ver con el flujo del programa como otro controlador ("view") y...
- Se ve afectado por cambiar comparaciones del tipo:

Código Python:
Ver original
  1. if A:
  2.     pass

vs.

Código Python:
Ver original
  1. if A == True:
  2.     pass

ILOGICOOOOOO!

Esto me pasa en particular cuando hago un cambio aqui:


Código Python:
Ver original
  1. def posts_list(request,message=None,id=None):
  2.    
  3.     if SHOW_HIDDEN==True:   ###### <<<<< aqui!
  4.         posts_list = Posts.objects.all()   
  5.     else:  
  6.         posts_list = Posts.objects.filter(deleted=False)           
  7.    
  8.     return render_to_response(
  9.         'posts/list.html',
  10.         {'posts_list': posts_list,
  11.         'message' : message,
  12.         'id' : id
  13.         }
  14.     )

Es este lenguaje tan ilogico y lleno de fallas ? no entiendo! eso no me pasa en otros lenguajes

ADEMAS ... me toca estar re-iniciando el servidor a cada rato... me va a tocar correr Django bajo Apache
__________________
Salu2!

Última edición por Italico76; 20/04/2014 a las 12:43
  #12 (permalink)  
Antiguo 21/04/2014, 00:04
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema raro con save() y booleans

Hola Italico76

Cita:
Es este lenguaje tan ilogico y lleno de fallas ? no entiendo! eso no me pasa en otros lenguajes
Amigo, esto no tiene que ver con las fallas que pueda tener Python y/o Django, en si puede que tenga una o varias fallas que todavía no se han solucionado en versiones actuales, aunque lo dudo ya que la fundación de Python y Django trabajan duro día a día para que Python y todo lo relacionado con él sea óptimo y sin ninguna falla.

Cuando yo empecé con la programación mSL, había hecho códigos que los veía muy bien y que los probaba y me daba error por alguna razón, que, para mí era algo ilógico, hasta que fui aprendiendo y pudo comprobar que el error era mío, lo mismo me pasó con Python, pensaba que había cosas que eran fallas del lenguaje, hasta que pude comprobar que las fallas eran mías y no del lenguaje.

Creo que estás alterado y cansado por tu esfuerzo y no estás viendo logros óptimos en tus proyectos, eso se debe a que debés aprender más, pero tomate un tiempo para distraer la mente y volvé de nuevo a probar otras maneras o métodos.
Yo tanto en Python como en C++ soy novato y me falta mucho por aprender.
Si en otros lenguajes no has tenido estos problemas es muy probable que no sean orientados a objetos o que te gustan más que Python-Django.

Tranquilo amigo Italico, ya saldrá tu código, tomalo con calma y tratá de entender porque eso falla, todo lleva su tiempo, seguí esforzándote que eso te dará experiencia.

Estas son mis humildes palabras de aliento.
Siento no poder ayudarte porque de Django no se nada de nada.

Espero que todo te salga bien, buena suerte y que tengas buen día.
  #13 (permalink)  
Antiguo 21/04/2014, 18:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema raro con save() y booleans

Si me ponen asi sea 1 punto de infraccion me banean forever........pero... sera que me pueden ayudar ? sigo sin entender que esta pasando aqui
__________________
Salu2!

Etiquetas: database, django
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 18:39.