Ich habe eine Frage zu Google App Engine und zur Abfrage des Datenspeichers.Wie bekomme ich alle Entitäten einer App Engine-Modellklasse, einschließlich derer ihrer Unterklassen?
Angenommen, ich habe drei Klassen bekam:
class Animal(db.Model):
age = db.IntegerProperty()
class Giraffe(Animal):
# ...
class Mouse(Animal):
# ...
Jetzt möchte ich alle Tiereinheiten erhalten. Ich könnte versuchen
Animal.all()
Aber das gibt nichts zurück (Ich habe alle Animal Entitäten mit der Giraffe und Maus Konstruktoren erstellt).
Wie bekomme ich alle Animal Entitäten? Ist der allgemeine Ansatz (Unterklassen einer Unterklasse von db.Modell) in Ordnung?
Aw, danke. Das Problem ist, dass ich mit der Giraffe anders als mit der Maus interagieren muss, und sie haben unterschiedliche Eigenschaften. Kennen Sie die empfohlene Vorgehensweise? Ich kann mir a) die Daten als String-Eigenschaft speichern (z. B. Animal.specialInfo = "Species: Maus, Favorite_brand_of_cheese: xyz") oder b) eine Liste verwenden, die auf die einzelnen Unterklassen verweist (ich könnte eine AnimalCollection erstellen). – weiqure
Sie können Ihr aktuelles Setup beibehalten, und ändern Sie einfach Ihre Abfrage - anstelle von Animal.all(), rufen Sie Giraffe.all() und Mouse.all() und kombinieren Sie diese Ergebnisse in einer Liste von generischen 'Animals'. –
Das Problem damit ist, dass ich den Listengenerierungscode für jede neue Klasse anpassen muss, die ich habe. Aber ich denke ich werde das tun, wenn ich keine bessere Lösung finde. – weiqure