2011-01-06 16 views
5

Wenn ich habe folgendes Modell:Select_related() rückwärts Beziehung - Automodellpopulation

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) 

Ich möchte jetzt alle Kontakte greifen und für die Adresse automatisch gefüllt werden. Was wäre der beste Weg, dies zu tun? Die einzige Möglichkeit, die ich bisher gefunden habe, besteht darin, die gewünschten Kontakte herauszufiltern und jeden Kontakt umzuleiten und dies Contact.addresses zuzuordnen. Ich benutze dies dann für die Ausgabe jeder Kontaktadresse innerhalb einer Vorlage.

Gibt es einen besseren Weg, dies zu tun? Select_related() macht fast das, was ich will, scheint aber nicht in der Lage zu sein, in die entgegengesetzte Richtung zu arbeiten.

Vielen Dank im Voraus für Ihre Hilfe zu diesem!

Antwort

4

Sie haben Recht, select_related funktioniert nur vorwärts! Um effizientere Reverse-Lookups zu erstellen, siehe this!

+0

Nur um zu verdeutlichen, können Sie die Suche mit 'select_related' nur auf OneToOne Field umkehren - es wird nicht mit FK oder M2M funktionieren –