Question

J'ai 2 modèles existants que j'ai besoin de rejoindre ceux qui sont non relationnels (pas de clés étrangères).Celles-ci ont été écrites par d'autres développeurs ne peuvent être modifiées par moi.

Voici une description rapide d'eux:

processus de modèle

  • Nom de champ de champ
  • Chemin de champ
  • Field Yepelse
  • Barre de terrain

    Service de modèle

    • Nom de champ de champ
    • Chemin de champ
    • ServiceName de terrain
    • champ FOO

      Je dois rejoindre toutes les instances de ces deux modèles sur les colonnes de noms de fichiers et de chemins.J'ai des filtres existants que je dois appliquer à chacun d'eux avant que cette jointure ne se produise.

      Exemple:

      a= processus.Object.filter (quelque chose= 231)

      B= Service.ObjectS.Filter (FOO= 'ABC')

      résultat= a.filter (nom de fichier= b.filename, chemin= b.path)

Était-ce utile?

La solution

Ceci est ceci, mais votre meilleur pari est d'itérer tous les modèles d'un type et de délivrer des requêtes pour obtenir vos modèles joints pour l'autre type.

L'autre alternative consiste à exécuter une requête SQL brute pour effectuer ces joints et récupérer les ID pour chaque objet de modèle, puis récupérer chaque paire jointe en fonction de celle-ci.Plus efficace au moment de l'exécution, mais il devra être maintenu manuellement si votre schéma évolue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top