23

ndb のメソッド put でオブジェクトを作成すると、タイプ Key(kind, id) のキーが自動的に作成されます。id は数値です。ドキュメント全体で、キーの ID に文字列を使用できることが示されていますが、オブジェクトの作成時にこれを自動的に行う方法がわかりませんでした。

私は User モデルを持っており、ユーザーのユーザー名 (一意であるため) をキーの ID として使用して、取得を高速化することを考えていました。それは良い考えですか?ユーザーが送信したので、ユーザー名に問題はありますか(入力を検証しています)?

4

3 に答える 3

32
class UserModel(ndb.Model):
  ...

user_model_entity = UserModel(id='some_string', ...)

これらの ID が変更される可能性がある場合、これは悪い考えかもしれません。それが独自のシステムであり、潜在的な変更に対応できる場合、それは良い考えですが、ID を使用することを決定する前に、ID が一意で比較的安定していることを確認する必要があります。

于 2012-10-24T21:58:25.030 に答える
13

作成時にエンティティの ID を指定します。モデルを定義するとき、そこに id 属性を設定しません。したがって、たとえば次のようになります。

class User(ndb.Model):
    # fields here

モデルを作成すると、次のものが得られます。

user = User(id='username', ...)

ユーザー名は一意であり、入力を検証するため、このアプローチで問題は発生しません。

ndb Modelコンストラクターの詳細については、 NDB Model Class - Constructorを参照してください。

お役に立てれば。

于 2012-10-24T22:23:09.787 に答える