-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()

我必须采取行动。如果 Titre 存在,则创建一个新的“sujet”,如果不存在,则创建一个新消息。我的问题是,当我创建“sujet”时,引用属性运行良好,但是当我尝试添加消息时,引用属性设置为无......

我的 html 添加一个 sujet:

<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 回答