[Django]-How to set an ndb keyProperty

2👍

try:

post.user_key = shuffle(users)[0].key

2👍

Maybe this helps to understand the NDB. I had the same questions with you.

class Person(ndb.Expando):
    pass

class Favourite(ndb.Expando):       
    pass

class Picture(ndb.Expando):
    pass

person  = Person()
person.put()
picture = Picture()
picture.put()
fav = Favourite(parent=person.key,
        person=person.key,
        picture=picture.key
        )
fav.put()

0👍

  1. Verify that shuffle works in this case, as User.query() returns an iter, not a list. (You can convert it to a list using shuffle( [ x for x in users ] ). Beware, this list could be looong.
  2. NDB has some really wired behavior sometimes, so id recommend you dont store an NDB-Key, but its serialized string, which is also compatible to ext.db: post.user_key = shuffle( [ x for x in users ] ).key.urlsafe()
  3. You could use KeyProperty for associations. If you need a more fine-graned control over your relations, you must implement them yourself.
    See https://developers.google.com/appengine/docs/python/ndb/properties#structured

Leave a comment