我想创建电影数据库,在这里用户可以标记的电影,他/她看到并喜欢:如何构建电影数据库和用户选择?
class Movies(ndb.Model):
watched = ndb.UserProperty()
liked = ndb.UserProperty()
请问这项工作?我使用Google帐户。 我应该如何选择后来用户喜欢的所有电影?
Upd。我已经按照systempuntoout approach和使用下面的代码保存用户选择:
user = users.get_current_user()
if user:
userschoices = models.UsersChoices(
movie=ndb.Key(models.Movies, movie_id), # TODO: what if movie_id is wrong?
watched=True,
user_id=user.user_id()
)
try:
userschoices.put()
self.response.out.write('1')
except:
self.response.out.write('0')
但是,如果用户做出选择几次,然后几个记录添加到数据存储... 岂不是更好只是将用户ID和电影ID保存为关键字?
userschoices = models.UsersChoices.get_by_id(user.user_id() + '-' + movie_id)
if userschoices is None:
userschoices = models.UsersChoices(id=user.user_id() + '-' + movie_id)
userschoices.movie = ndb.Key(models.Movies, movie_id) # TODO: what if movie_id is wrong?
userschoices.user_id = user.user_id()
if option == 'liked':
userschoices.liked = True
elif option == 'watched':
userschoices.watched = True
然而,利用这样的方法,如果我没有通过liked
,然后它覆盖了与None
值(与watched
一样,如果没有通过,则使用None
)。
为什么不将默认参数传递给初始化为None的属性,以便每次都根据您的实现使用true或false进行初始化 – 2013-01-05 12:59:46