ho questo codice:Foo.objects.get (id = None) restituisce esempio Foo, a volte
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")
... e, a volte, l'eccezione in qualche modo viene sollevato. Come potrebbe mai accadere?
Una volta ogni tanto, più volte al giorno, restituisce istanze di commenti apparentemente casuali. Di solito si comporta come previsto e restituisce Nessuno.
Questo è il campo ID della tabella Commento: id int(11) NOT NULL AUTO_INCREMENT
quindi non è che sia annullabile. È una tabella InnoDB.
Come per Comment.all_objects, questa è la sua definizione: all_objects = Manager()
ed è la prima riga di quella classe.
Siamo su Django 1.2.7.
Aggiornamento Aggiunto accesso all'eccezione per ottenere l'SQL generato quando viene sollevata l'eccezione. Eccolo:
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
Dove hai definito il parent_comment_id al 5 ° linea non riesco a trovarlo nel codice – zsong
@sza è irrilevante -?. Mi sto chiedendo di come l'eccezione è in grado di essere sollevato, il che succede quando parent_comment_id è None – aehlke
Ok. Ma se non lo hai ancora definito o assegnato con un valore precedente, è decisamente None. Puoi incollare il codice relativo all'assegnazione parent_comment_id? Grazie! – zsong