2011-01-04 2 views
1

Wenn auf ReferenceProperty zugegriffen wird, wird eine Entität aus dem Datenspeicher geladen, aber manchmal möchte ich nur einen referenzierten Modellschlüssel verwenden, und ich möchte die zusätzlichen Kosten für das Laden referenzierter Modelle nicht übernehmen.Wie bekomme ich nur einen Schlüssel - ohne die Entität zu laden - von ReferenceProperty in GAE?

Gibt es eine Möglichkeit, nur auf den Schlüssel einer ReferenceProperty zuzugreifen?

+0

möglich Duplikat von [Wie Sie nicht automatisch dereferenzieren ein db.ReferenceProperty in Google App Engine?] (http: // stackoverflow .com/questions/2395144/how-do-you-not-automatisch-dereference-a-db-referenceproperty-in-google-app-ger) –

+0

Thx, konnte ich nicht finden, dass ... wahrscheinlich verursachen, dass q/a ist gewunden und konzentrierte sich darauf, wie "ReferenceProperty" beim Zugriff automatisch geladen wird. Ich denke, mein q/a ist einfacher und konzentriert sich darauf, wie man nur den * Schlüsselwert * von 'ReferenceProperty' erhält - ergo einfacher zu finden –

Antwort

8

Bei

class Foo(db.Model): 
    bar = db.ReferenceProperty() 

und

foo = Foo.get_by_id(1) # or however you get it 

Sie den Schlüssel foo ‚s barReferenceProperty wie so abrufen kann:

key = Foo.bar.get_value_for_datastore(foo) 
+0

+1 schön - war nicht auf diesen einen gestoßen. – bgporter

+0

Genau das, was ich gesucht habe. Ich habe vergessen, dass die zugrunde liegenden Werte in den Präfix-Attributen * _ * gespeichert sind. Ich denke also, der nicht unterstützte Weg wäre 'foo._bar' zu verwenden, um dies zu überprüfen. –

Verwandte Themen