Google App Engine Modelle, wie z.B.:
from google.appengine.ext.db import Model
class M(Model):
name = db.StringProperty()
Dann in einer Jinja2-Vorlage, die von einer Django-Ansicht mit einer Instanz von M
eingegeben als m
:
The name of this M is {{ m.name }}.
Wenn m
wird initialisiert ohne name
eingestellt ist, wird Folgendes gedruckt:
Der Name dieses M ist None.
Die bevorzugte und erwartete Ausgabe (und die Ausgabe bei Verwendung von Django-Vorlagen) wäre/ist:
Der Name dieses M ist .
Wissen Sie, warum dieses Problem auftritt und wie man die gewünschte und erwartete Ausgabe erhält?
0 Stimmen
Es ist erwähnenswert, dass die Festlegung eines Standardwerts, ala.
name = db.StringProperty(default="")
behebt dieses Problem. Das Problem scheint zu sein, dassm.name
ist NoneType, es sei denn, es gibt einen Standardwert.0 Stimmen
Ihre Klasse sollte die Unterklasse
db.Model
, etwa so:class M(db.Model):
-- Ändert das etwas?0 Stimmen
@Jason Hall - Danke für den Hinweis. Das behebt das Problem leider nicht.
1 Stimmen
Ich glaube, Sie haben die Antwort selbst gefunden. Wenn Sie keinen Namen für diese Eigenschaft angeben, speichert App Engine sie anscheinend als
None
und nicht "", so dass es beim Ausdrucken als "None" ausgegeben wird. Geben Sie als Standardwert "" an, und Ihr Problem ist gelöst, wie Sie sagten.0 Stimmen
@Jason Hall: Er importiert Model aus dem db-Modul, anstatt wie üblich db selbst zu importieren. Das ist kein Problem, außer vielleicht stilistisch.
0 Stimmen
@Jason Hall - Ich glaube, Sie haben Recht :) Du solltest das als Antwort einreichen ;)
0 Stimmen
@Wooble Mir ist klar, dass er vor seiner Bearbeitung Model überhaupt nicht unterklassifiziert hat. Das war zwar nicht die Ursache für sein Problem, aber es würde es sicherlich schwieriger machen, Model aufzurufen.
put()
:)