-1

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>
4

1 に答える 1

0

次に、動作するアプリケーションをダウンロードします。これは、必要なものと非常によく似ています。

ゲストブックの例

greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date DESC LIMIT 10")

for greeting in greetings:
  if greeting.author:
    self.response.out.write('<b>%s</b> wrote:' % greeting.author.nickname())
  else:
    self.response.out.write('An anonymous person wrote:')
  self.response.out.write('<blockquote>%s</blockquote>' %
                          cgi.escape(greeting.content))
于 2012-11-20T15:31:29.353 に答える