ho questo modello con un auto riferimento relazione chiave esterna:Django query di filtro ForeignKey auto-ricorsiva per tutti Childs
class Person(TimeStampedModel):
name = models.CharField(max_length=32)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
Ora voglio ottenere tutti i bambini a più livelli per una persona. Come posso scrivere una query su Django? Deve comportarsi come una funzione ricorsiva.
Dovresti essere get_all_children() come chiamata di funzione e devi usare r = r + c.get_all_children() o finirai con elenchi annidati. Non mi sembra di avere il diritto di modificarlo da solo – alan
Codice aggiornato in base al commento. Se tutti avessero il permesso di modificare tutti i post avremmo un grosso problema :) – sunn0
Penso che questo dovrebbe avere anche include_self = True nella chiamata della funzione interna. Altrimenti, ad ogni ricorsione scendiamo di un altro livello, senza mai aggiungere nulla a 'r'. Ha funzionato correttamente solo per me dopo aver apportato questa modifica. – andy