Ho 4 modelli e voglio recuperare un join tra di loroDjango invertire relazione con select_related
ModelA
class ModelA(models.Model):
product = models.ForeignKey(ModelB)
group = models.ForeignKey(Group)
ModelB
class ModelB(models.Model):
title = models.CharField()
ModelC
class ModelC(models.Model):
product = models.ForeignKey(ModelB)
group = models.ForeignKey(ModelD)
ModelD
class ModelD(models.Model):
name = models.CharField()
ora voglio tutti i miei Modela oggetti uniti con ModelB, ModelC e ModelD In SQL questo è abbastanza facile cosa da fare. Basta creare join tra i tavoli. Con Django ORM sono bloccato perché posso solo fare una relazione in avanti.
sto facendo questo
ModelA.objects.all().select_related(product)
Ma non posso aderire ModelC ho già letto this article, ma io non voglio anello sopra la mia lista grande, per fare una cosa semplice! E voglio colpire il database solo una volta.
Sto usando l'ultima versione di Django e spero che ci sia già una soluzione a questo, di cui non sono a conoscenza.
Grazie.
Hai provato qualcosa del genere: 'ModelA.objects.all().select_related ('product', 'product__modelc', 'product__modelc__group') ' ? Non postare questo come risposta perché non sono assolutamente sicuro se sarebbe quello che vuoi. –
@bildja: 'select_related' fa * not * supporta gli attraversamenti. –