tengo este código:Foo.objects.get (id = Ninguno) devuelve Foo ejemplo, a veces
try:
parent_comment = models.Comment.all_objects.get(id=parent_comment_id)
except models.Comment.DoesNotExist:
parent_comment = None
if parent_comment is not None and parent_comment_id is None:
raise Exception("WTF django/mysql")
... y, a veces, a excepción de alguna manera se levantada. ¿Cómo pudo suceder esto?
De vez en cuando, varias veces al día, devuelve instancias de comentario aparentemente al azar. Por lo general, se comporta como se esperaba y devuelve None.
Este es el campo id de la tabla comentario: id int(11) NOT NULL AUTO_INCREMENT
por lo que no es que sea anulable. Es una tabla InnoDB.
En cuanto a Comment.all_objects, este es su definición: all_objects = Manager()
y es la primera línea en esa clase.
Estamos en Django 1.2.7.
Actualización Agregué el registro a la excepción para obtener el SQL que se genera cuando se produce la excepción. Aquí está:
SELECT `canvas_comment`.`id`, `canvas_comment`.`visibility`, `canvas_comment`.`parent_content_id`, `canvas_comment`.`parent_comment_id`, `canvas_comment`.`timestamp`, `canvas_comment`.`reply_content_id`, `canvas_comment`.`reply_text`, `canvas_comment`.`replied_comment_id`, `canvas_comment`.`category_id`, `canvas_comment`.`author_id`, `canvas_comment`.`title`, `canvas_comment`.`ip`, `canvas_comment`.`anonymous`, `canvas_comment`.`score`, `canvas_comment`.`judged`, `canvas_comment`.`ot_hidden` FROM `canvas_comment` WHERE `canvas_comment`.`id` IS NULL
¿Dónde se define el parent_comment_id en la línea 5 que no lo encuentra en su código – zsong
@sza es irrelevante -. Estoy preguntando acerca de cómo la excepción es capaz de ser elevada, que sucede cuando parent_comment_id es Ninguno. – aehlke
Ok. Pero si no lo ha definido o asignado con un valor anterior, definitivamente no lo es. ¿Puede pegar el código que relaciona la asignación parent_comment_id? Gracias! – zsong