/ / ReferenceProperty Filter - Python, Google-App-Engine

ReferenceProperty-Filter - Python, Google-App-Engine

Ich habe eine Art Liste und eine Art Benutzer. Ich verwende derzeit IntegerProperty, um Benutzer-IDs mit Listen zuzuordnen, aber ich möchte zu ReferenceProperty wechseln. Derzeit verwende ich diesen Code (mit IntegerProperty):

db.GqlQuery("SELECT * FROM List WHERE UserID = :1", userid)

Wie sollte der Code mit ReferenceProperty aussehen? Das Skript hat die numerische ID Benutzer (Benutzer-ID).

Antworten:

3 für die Antwort № 1

Zuerst müssen Sie einen Schlüssel aus Ihrer ID erstellen. Sie können das so machen (vorausgesetzt, Ihre Benutzereinheit hat keinen Elternteil):

user_key = db.Key.from_path("UserInfo", user_id)

Jetzt können Sie es in einer Abfrage genauso verwenden wie sonst auch:

db.GqlQuery("SELECT * FROM List WHERE user_key = :1", user_key)

Oder äquivalent zu einer Abfrage anstelle von GQL:

List.all().filter("user_key =", user_key)

1 für die Antwort № 2

Mit einer ReferenceProperty benötigen Sie einen tatsächlichenEntität für die Referenz. Also wäre der Code im Wesentlichen derselbe, außer dass userid kein int wäre, es wäre eine Entität (oder ich denke, dass ein Schlüssel für eine Entität in diesem Fall funktionieren würde). Wenn Sie versuchen, zu ReferenceProperty I zu wechseln, nehmen Sie an, dass Sie eine User-Entity in Ihrer List anstelle der Benutzer-ID verwenden möchten.

user = User.all()[0] # or some other thing to get your user
db.GqlQuery("SELECT * FROM List WHERE user = :1", user)