2011-01-06 9 views
5

Se ho il seguente modello:Select_related() all'indietro relazione - modello di auto popolazione

class Contact(models.Model) 
    name = models.CharField(max_length=100) 
    ... 

class ContactAddress(models.Model) 
    line1 = models.CharField(max_length=100) 
    line2 = models.CharField(max_length=100) 
    ... 
    contact = models.ForeignKey(Contact) 

Ora voglio prendere tutti i contatti e per l'indirizzo di essere auto popolate. Quale sarebbe il modo migliore per farlo? L'unico modo che ho trovato finora è quello di filtrare i contatti che voglio e aggirare ogni contatto e assegnarlo a Contact.addresses. Quindi utilizzo questo per l'output di ciascun indirizzo di Contatti all'interno di un modello.

C'è un modo migliore per farlo? Select_related() fa quasi ciò che voglio, ma non sembra in grado di funzionare nella direzione opposta.

Grazie in anticipo per il vostro aiuto su questo!

risposta

4

Avete ragione, select_related funziona solo avanti! Per rendere più efficienti le ricerche inverse, vedi this!

+0

Giusto per chiarire, è possibile annullare la ricerca con 'select_related' solo su OneToOne Field - non funzionerà con FK o M2M –

Problemi correlati