2011-01-06 13 views
5

Aşağıdaki modeli varsa:Select_related() geriye ilişkisi - oto modeli nüfus

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) 

şimdi tüm İletişim kapmak isteyen ve adres olmak için otomatik olarak doldurulur. Bunu yapmanın en iyi yolu ne olurdu? Şimdiye kadar bulduğum tek yol, istediğim Kişileri filtrelemek ve her bir irtibatın etrafında dolaşmak ve bunu Contact.addresses öğesine atamaktır. Bunu bir şablon içindeki her bir Kişiler adresinin çıktısını almak için kullanıyorum.

Bunu yapmanın daha iyi bir yolu var mı? Select_related() neredeyse istediğimi yapar, ancak ters yönde çalışacak gibi görünmüyor.

Bu konuda yardımlarınız için şimdiden teşekkür ederiz!

cevap

4

Haklısınız, select_related sadece ileriye doğru çalışıyor! Daha verimli geriye doğru arama yapmak için bkz. this!

+0

Sadece netleştirmek için, yalnızca OneToOne Alanı'nda select selected ile aramayı tersine çevirebilirsiniz - FK veya M2M ile çalışmaz –