Domanda

Ho 2 modelli esistenti che ho bisogno di aderire che non sono relazionali (nessuna chiavi straniere).Questi sono stati scritti da altri sviluppatori non possono essere modificati da me.

Ecco una descrizione rapida di loro:

Processo del modello

    .
  • FILENAME FILENAME
  • percorso del campo
  • campo qualcosa
  • barra del campo

    Servizio di modello

      .
    • FILENAME FILENAME
    • percorso del campo
    • campo serviceename
    • campo foo

      Ho bisogno di aderire a tutte le istanze di questi due modelli sul nome file e sulle colonne del percorso.Ho dei filtri esistenti Devo applicare a ciascuno di loro prima che si verifichi questo join.

      Esempio:

      A= Process.Objects.Filter (qualcosa= 231)

      b= service.objects.filter (foo= 'ABC')

      Risultato= A.Filter (file filename= B.FileName, Path= B.Path)

È stato utile?

Soluzione

Questo fa schifo, ma la soluzione migliore è quella di iterare tutti i modelli di un tipo e emettere query per ottenere i tuoi modelli uniti per l'altro tipo.

L'altra alternativa è quella di eseguire una query SQL RAW per eseguire questi join e recuperare gli ID per ciascun oggetto modello, quindi recuperare ciascuna coppia unita in base a quella.Più efficiente in tempo di esecuzione, ma dovrà essere mantenuto manualmente se il tuo schema si evolve.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top