Ich habe mehrere Klassen, für die ich spezielle Funktionen haben, die NDB in einem kürzeren Weg, wie in diesem Beispiel abfragen:Wie kann ich Funktionen erstellen, die für verschiedene Modellklassen in GAE funktionieren?
class SomeModel(ndb.Model):
xcode = ndb.StringProperty('c')
descr = ndb.StringProperty('d')
client = ndb.KeyProperty('cl')
order = ndb.IntegerProperty('o')
mod = ndb.DateTimeProperty(auto_now=True)
@classmethod
def q_base(cls, ancestor):
return cls.query(ancestor=ancestor).order(cls.codigo)
Die Funktion q_base etwas Platz spart und macht den Code in den Handler klarer sehen. Aber da einige Modelle genau diese Funktion benötigen, muss ich sie mehrmals wiederholen, was ein Problem darstellt.
Wie kann ich es lösen? Kann ich einfach eine BaseClass (ndb.Model) erstellen, die Funktionen dort hinzufügen und jedes andere Modell davon erben lassen? Oder muss ich PolyModel dafür verwenden? Wie würde das aussehen? Außerdem würde ich mich über jeden Einblick freuen, was mit irgendwelchen existierenden Entitäten passieren würde.
Während mehrfache Vererbung die Verwendung des PolyModel erfordern würde, funktioniert es, wenn ich einfach eine BaseClass erstelle, die von ndb.Model erbt und dann die anderen Klassen von dieser Basisklasse erben lasse. Bis jetzt funktioniert alles wie erwartet, danke! –