我在python google app引擎中有这个类:
class Book(db.Model):
name = db.StringProperty()
belongsTo = db.Key()
我的问题是,我如何创建一个关键对象,例如我想说它属于id为1的人,我试过这个但它不起作用
b = foo.Book(name="foo book", belongsTo="1")
b.put()
我也尝试过做
belongsTo = key(1)
如何插入外键?
答案 0 :(得分:3)
不是使用任意Key()(除非那是你想要的),而是定义你的Book模型,使它显式引用Person,就像这样(为了清晰起见,假装Person类)
class Person(db.Model):
name = db.StringProperty()
class Book(db.Model):
name = db.StringProperty()
belongsTo = db.ReferenceProperty(Person)
然后你可以做类似的事情:
book = Book.get(book_key)
owner_name = book.belongsTo.name
和
person = Person.get(person_key)
books_owned_by_person = person.book_set.get()
请参阅Types and Property Classes App Engine文档。
答案 1 :(得分:1)
从Moishe的答案中取出模型:
class Person(db.Model):
name = db.StringProperty()
class Book(db.Model):
name = db.StringProperty()
belongsTo = db.ReferenceProperty(Person)
这是您将外键Person
分配给Book
的方式:
person_key = db.Key.from_path('Person', '1') # '1' is key name of person
book = Book(name = 'foo book', belongsTo = person_key)