Python 2.7 を使用してアプリ エンジンで開発を開始しましたが、データストアと先祖/キー/親と本当に混同しています。
例として、カテゴリ、件名、および応答を含む単純なフォーラムを開発しようとしています。
関係を表現して使用する方法がわかりません。ドキュメントを調べてもう一度調べましたが、実装できません。
データの保存と取得に使用するエンティティとクエリの関係を説明するコードのサンプルを共有できますか?
これはmodels.pyの私のクラスです
class UserInfo(db.Model):
Email = db.EmailProperty()
pseudo = db.StringProperty()
UserID = db.StringProperty()
class Sujet(db.Model):
Titre = db.StringProperty()
Auteur = db.StringProperty()
Date = db.DateTimeProperty(auto_now_add=True)
class Message(db.Model):
Auteur = db.StringProperty()
sujet = db.ReferenceProperty(Sujet, collection_name='messages')
Date = db.DateTimeProperty(auto_now_add=True)
Message = db.TextProperty()
私の投稿方法:
def post (self):
UserID = users.get_current_user().user_id()
query = UserInfo.all()
query.filter('UserID =',UserID)
User_query = query.get()
Auteur = User_query.pseudo
Titre = self.request.get('titre')
if Titre:
sujet = Sujet()
sujet.Auteur = Auteur
sujet.Titre = Titre
sujet.put()
message = Message()
message.Auteur = Auteur
message.sujet = sujet
message.Message = self.request.get('message')
message.put()
else:
sujet = Sujet.all()
sujet = sujet.filter('Titre =',self.request.get('sujet'))
sujet = sujet.get()
message = Message()
message.Auteur = Auteur
message.sujet = sujet
message.Message = self.request.get('message')
message.put()
私は行動しなければなりません。タイトルが存在する場合は新しい「sujet」を作成し、存在しない場合は新しいメッセージを作成します。私の問題は、「sujet」を作成すると参照プロパティがうまく機能することですが、メッセージを追加しようとすると、参照プロパティが none に設定されます...
sujetを追加する私のhtml:
<h4>Nouveau sujet</h4>
<form action="/index/forum" method="post">
<div><input type="text" name="titre" placeholder="Titre " size="24"</div>
<div><textarea name="message" rows="5" cols="30" size="24"></textarea></div>
<div><input type="submit" value="Créer" class="btn"></div>
</form>
既存のメッセージにメッセージを追加するには:
<h3>{{ sujet.Titre }}</h3>
<div>
<form action="/index/forum" method="post">
<div><input type="hidden" name="sujet" value="{{ sujet.Titre }} " size="24" </div>
<div><textarea name="message" rows="5" cols="30" size="24"></textarea></div>
<div><input type="submit" value="Répondre" class="btn"></div>
</form>
</div>