def test_get_reference_key(self): entity_1 = FooModel(name='foo', age=15, married=False) entity_1.put() entity_1_key = str(entity_1.key()) entity_2 = BarModel(key_name='first_bar', foo=entity_1) entity_2.put() entity_1.delete() entity_3 = BarModel.get_by_key_name('first_bar') # Won't resolve, but we can still get the key value. self.assertRaises(db.Error, getattr, entity_3, 'foo') self.assertEqual(str(ext_db.get_reference_key(entity_3, 'foo')), entity_1_key)
def test_get_reference_key_2(self): # Set a book entity with an author reference. class Author(db.Model): name = db.StringProperty() class Book(db.Model): title = db.StringProperty() author = db.ReferenceProperty(Author) author = Author(name='Stephen King') author.put() book = Book(key_name='the-shining', title='The Shining', author=author) book.put() # Now let's fetch the book and get the author key without fetching it. fetched_book = Book.get_by_key_name('the-shining') self.assertEqual(str(ext_db.get_reference_key(fetched_book, 'author')), str(author.key()))