Frage

Ist es möglich, von einer Google App Engine db auszuwählen, in dem der Schlüssel eines db.Model Objekts ist nicht in einer vorgegebenen Liste? Wenn ja, was wäre die Syntax?

Ex einer Modellklasse:

class Spam(db.Model):
    field1 = db.BooleanProperty(default=false)
    field2 = db.IntegerProperty()

Beispiel einer Abfrage, die ich arbeiten würde, aber nicht herausfinden können:

spam_results = db.GqlQuery(
"SELECT * FROM Spam WHERE key NOT IN :1 LIMIT 10", 
['ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjAEM', 
 'ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjgEM'])

for eggs in spam_results:
  print "id: %s" % a.key().id()
War es hilfreich?

Lösung

Nein Obwohl App Engine eine "IN" Abfrage unterstützt, ist es nicht eine "NOT IN" Abfrage nicht unterstützt.

Wenn jedoch die Liste der Objekte, die Sie nicht wollen, ist klein, dann könnten Sie auch nur abrufen alle Einheit und Filter aus denen nicht wahr müssen sich selbst.

Alternativ kann, wenn die Liste der Objekte, die Sie ausschließen möchten, ein großer Anteil aller Entitäten, dann würde die obige Lösung eher ineffizient sein. Stattdessen könnten Sie vielleicht eine zusätzliche Eigenschaft zu Ihrem Modell hinzufügen, die Sie Entitäten herauszufiltern verwenden könnten Sie nicht wollen (ob dies möglich ist, wird auf Ihre speziellen Bedürfnisse und Daten abhängen).

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