Frage

Ich habe 2 bestehende Modelle, die ich mitmachen muss, dass dies nicht relational ist (keine fremde Schlüssel).Diese wurden von anderen Entwicklern verfasst, die nicht von mir modifiziert werden können.

Hier ist eine kurze Beschreibung von ihnen:

Modellprozess

  • Feld Dateiname
  • Feldpfad
  • Feld etwaselse
  • Feldbalken

    modelldienst

    • Feld Dateiname
    • Feldpfad
    • feld serviceName
    • feld foo

      Ich muss an allen Instanzen dieser beiden Modelle auf dem Dateinamen- und Pfadsäulen teilnehmen.Ich habe bereits vorhandene Filter, die ich für jeden von ihnen anwenden muss, bevor dieses Join auftritt.

      Beispiel:

      a= Prozess.Objects.Filter (etwaselse= 231)

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

      result= a. filter (Dateiname= B.Filename, path= b.Path)

War es hilfreich?

Lösung

Das ist saugt, aber Ihre beste Wette ist, alle Modelle eines Typs zu iterieren, und ergeben Abfragen, um Ihre beigetretenen Modelle für den anderen Typ zu erhalten.

Die andere Alternative besteht darin, eine rohe SQL-Abfrage auszuführen, um diese Verbindungen auszuführen, und die IDs für jedes Modellobjekt abzurufen und dann jedes zusammengefügte Paar abzurufen.Effizienter zur Laufzeit, aber es muss manuell aufrechterhalten werden, wenn sich Ihr Schema entwickelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top