2017-08-14 1 views
1

Je rencontre des difficultés pour obtenir des objets connexes (second degré). Mes modèles regardent actuellement comme ceTraverser les clés étrangères Django de manière efficace pour les ensembles de requêtes

class Transaction(models.Model): 
    from_account = models.ForeignKey(Account, related_name="sent") 
    to_account = models.ForeignKey(Account, related_name="recieved") 
    ... 

class Account(models.Model): 
    address = models.CharField(max_length=42, primary_key=True) 
    ... 

Ce que je fais jusqu'à présent pour obtenir une liste agrégée des transaced_with pour un compte est la suivante:

accs = [] 
if hasattr(account, 'recieved'): 
    for tx in account.recieved.all(): 
     acc = tx.from_account 
     accs.append(acc) 

if hasattr(account, 'sent'): 
    for tx in account.sent.all(): 
     acc = tx.to_account 
     accs.append(acc) 
return accs 

De cette façon est cependant très lent, donc Je me demandais, quelle est la manière efficace d'agréger ces sortes d'objets connexes? Ce que je veux à la fin est une liste de address du Account s accs

Répondre