私はPython2.7とwebapp2フレームワークでappengineを使用しています。ndb.modelを使用していません。
私は次のモデルを持っています:
class Story(db.Model);
name = db.StringProperty()
class UserProfile(db.Model):
name = db.StringProperty()
user = db.UserProperty()
class Tracking(db.Model):
user_profile = db.ReferenceProperty(UserProfile)
story = db.ReferenceProperty(Story)
upvoted = db.BooleanProperty()
flagged = db.BoolenProperty()
ユーザーはストーリーに賛成またはフラグを立てることができますが、1回だけです。そこで、上記のモデルを思いつきました。ここで、ユーザーがupvote
リンクをクリックすると、データベースで、ユーザーがまだ投票していないかどうかを確認しようとします。したがって、次のことを実行しようとします。
IDを次のように使用してユーザーインスタンスを取得します
up = db.get(db.Key.from_path('UserProfile', uid))
次に、次のようにストーリーインスタンスを取得します
s_ins = db.get(db.Key.from_path('Story', uid))
Tracking
次に、これら2つに基づくが存在するかどうかを確認します。存在する場合は投票を許可しません。存在しない場合は、投票してTrackingインスタンスを更新します。
とのid( )を指定してインスタンスをフェッチする最も便利な方法は何ですか?Tracking
db.key().id()
user_profile
story
ユーザープロファイルIDとストーリーIDを指定してモデルを保存する最も便利な方法は何ですか?Tracking
追跡を実装するためのより良い方法はありますか?