Es gibt Beiträge, wie zu set, get, KeyProperty/StructuredProperty, aber nichts sagt mir, wie man NDB für die Modellierung von vielen zu verwenden.GAE Python: Wie NDB KeyProperty-Modelle für viele-zu-eins-Beziehung verwenden?
Ich habe zwei Modelle:
class Department(ndb.Model):
department_id = ndb.IntegerProperty()
name = ndb.StringProperty()
class Student(ndb.Model):
student_id = ndb.IntegerProperty()
name = ndb.StringProperty()
dept = ndb.KeyProperty(Kind=Department)
Wie wird die many-to-one gewährleistet ist, das heißt, wenn ein Einsatz in Rekord Student ist, es muss Abteilung Schlüssel w.r.t zur Abteilung Datenspeicher validieren?
Wie fügen Sie einen Schülerbericht ein, um eine Viele-zu-Eins-Beziehung sicherzustellen?
Option 1:
# Insert student record without checking for valid dept id. GAE automatically validates
student = Student(student_id=...., dept=ndb.Key(Department, input_dept_id))
Option 2:
# check for valid dept id and then insert student record
dept_key = ndb.Key(Department, input_dept_id)
if(dept_key.get()):
student = Student(student_id=...., dept=dept_key)
Ich habe versucht, die Option 1 mit einem dept_id nicht in Abteilung Einheiten und es war in der Lage, dass die Schüler Entität einzufügen. Ich bin GAE ziemlich neu.
GAE wird Ihre Schlüssel nicht "validieren" und lässt Sie einen beliebigen Schlüssel verwenden, auch wenn er nicht auf eine vorhandene Entität verweist. Sie müssen sicherstellen, dass Sie selbst gültige Schlüssel verwenden. Ihre Option 2 ist eine Lösung. –
Eine Sache zu beachten Sie Code hat Abteilung als eine Klasse. Also Abteilung in jedem Schlüssel Konstruktor sollte "Abteilung" - "Student (student_id = ...., dept = ndb.Key (" Abteilung ", input_dept_id))' –
@TimHoffman, Vielen Dank für die Eingabe. Abteilung ohne Anführungszeichen scheint für mich zu arbeiten. Es ist in der Lage, die Entität zu holen. – psun