Ich bin auf der Suche nach der intelligentesten/vielfältigsten Art der Handhabung von Kategorien in App Engine. Ich sehe zwei Ansätze:Unterschiedliche Arten der Eingabe von Kategorien in Google App Engine
Google App Engine Data Store Model Reference Another Class
mit Weg A:
companycategory = db.ReferenceProperty(mycategories, collection_name = 'categories')
aus dem Beispiel in der URL:
class Category(db.Model)
name = db.StringProperty(required=True)
city = db.ReferenceProperty(City, collection_name = 'categories')
und Weise B:
companycategory = db.CategoryProperty(default="A", choices=["A", "AA", "B", "C"], required=True)
Gibt es ein Alles andere, was man beachten sollte. A verwendet eine Tabelle und ein anderes Objektmodell, das übertrieben erscheint, aber Weg B setzt Text in Felder, was bedeutet, dass sich Tippfehler leicht einschleichen können. Wenn man ganze Zahlen in das Kategorienfeld einfügt und manuell referenziert, gibt es eine kluge Möglichkeit, etwas anderes zu tun? Oder beiße ich die Kugel mit einem anderen Modell/Tisch?
Vielen Dank im Voraus
@Dave: Wenn Sie neu anfangen, sollten Sie das neuere NDB-Modul anstelle der DB verwenden: https://developers.google.com/appengine/docs/python/ndb/. Da Sie sich Sorgen wegen Tippfehlern usw. gemacht haben, können Sie auch einen separaten Speicher für alle gültigen Kategorien erstellen und die Eingaben dagegen prüfen, um sicherzustellen, dass das, was gespeichert ist, angemessen ist. – Sologoub
Danke. Ich denke, eine meiner Komplikationen ist das Django-Framework. Die Art der Saite, die nicht so elegant ist wie die Tasten, würde für diesen Anwendungsfall gut funktionieren. Wie auch immer, ich habe Probleme mit der Django-Vorlage. Ich erhalte den folgenden Fehler: 'code'BadValueError: Eigenschaft firmencategory ist ['B', 'i', 'o']; muss einer von ['Bio', 'Pharm', 'I', ''] 'code 'sein, wenn ich den folgenden' code'-Firmencategory = db.StringListProperty (default = "Bio", Auswahl = ["Bio", "Pharm", "I", "S"], erforderlich = True) 'code' – Androidian
@Dave: Ändere den Standardwert =" Bio "auf default = [" Bio "]. StringListProperty erwartet eine Liste von Strings (sogar eine Liste mit einem String), aber keinen String. – Albert