1

私はモデルのリストを作成すると、トークンが同じであるNDBモデルGAEのndbモデルでランダムなデフォルト値を作成する方法は?

import os 
class ProblemInvite(ndb.Model): 
    email = nab.StringProperty(required=True) 
    token = ndb.StringProperty(required=True, default=os.urandom(16).encode('hex')) 

を持っている:

import logging 
for email in emails: 
    problem_invite = ProblemInvite(email=email_address) 
    logging.exception(problem_invite.token) 

奇妙なことは、各電子メールのために招待トークン、あるは何と同じです間違っている?ありがとう。

答えて

2

データストア内のプロパティタイプのデフォルト値は、一度に1つしか指定できません。 Property Optionsテーブルから:

enter image description here

だからあなたos.urandom(16).encode('hex')式は一度だけ評価されます。私は100%確信しているわけではありませんが、データストアのモデルがアップロードされたときに、アプリデプロイ時にそれがあると思われます。

問題を解決するには、デフォルト値を削除し、エンティティを作成するときに明示的にプロパティ値を指定します。

サイドノート:すでにエンティティのを変更することがあり(つまり、データが影響を受ける性質のために返される)を行動として、これらのデフォルト値を変更で特に注意する必要がNDBモデルのデフォルト値を使用してデプロイ時/更新時にデータストア内に存在します。

+0

お返事ありがとうございます。意味をなさない – Stephen

関連する問題