Ich benutze SQLAlchemy 0.5rc, und ich möchte einen automatischen Filter zu einer Beziehung hinzufügen, so dass jedes Mal, wenn es versucht, Datensätze für diese Beziehung abzurufen, die "Remote" ignoriert, wenn sie als markiert sind "logically_deleted" (ein boolesches Feld der Kindtabelle)Wie fügt man einer Beziehung mit SQLAlchemy einen automatischen Filter hinzu?
Zum Beispiel, wenn ein Objekt "Eltern" hat eine "Kinder" Beziehung, die 3 Datensätze hat, aber einer von ihnen ist logisch gelöscht, wenn ich für " Parent "Ich möchte SQLA zu holen das übergeordnete Objekt mit nur zwei Kindern.
Wie soll ich es tun? Durch Hinzufügen einer "und" -Bedingung zum primären Parameter der Beziehung? (ZB „Children.parent_id == Parent.id and Children.logically_deleted == False
“, aber ist es richtig zu schreiben „und“ auf diese Weise?)
Edit:
Ich schaffte es auf diese Weise zu tun
children = relation("Children", primaryjoin=and_(id == Children.parent_id, Children.logically_deleted==False))
aber ist es eine Möglichkeit, stattdessen eine Zeichenfolge als primaryjoin verwenden?
Kann dies mit dem __mapper_args__ übersetzt werden? Ich meine, ich benutze deklarative. – Marconi
Ich habe versucht, es in mapper_args zu verwenden, aber ich bekomme eine Fehlermeldung, dass "mapper() mehrere Werte für das Schlüsselwortargument 'local_table'" erhalten hat. Ich fürchte, es ist nutzlos. –