微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在应用引擎python中过滤实体子项的查询

如何解决在应用引擎python中过滤实体子项的查询

|| 我有一个问题模型和一个响应模型,谁的父母被设置为一个特定的问题,例如:
class Question(db.Model):
  myQuestion = db.Stringproperty()

class Response(db.Model):
  responder = db.ReferenceProperty(reference_class = User,collection_name = \'my_responses\')
  myResponse = db.Stringproperty()

def createQuestion(self,user,question):
  Question(myQuestion = question,parent = user).put()

def respond(self,question,response):
  Response(responder = user,myResponse = response,parent = question).put()
给定用户,我如何获得用户未回答的所有问题?     

解决方法

        一种解决方案是保留用户已回答的问题列表。您可以将这些列表保留在用户的实体组中,并使用当前月份(例如)作为键名。
class QuestionsAnswered(db.Model):
    answered = db.ListProperty(db.Key)
将QuestionsAnswered实体的键名设置为当月(对于实例,我喜欢\'201106 \'),然后将其放入用户的实体组中。这将使获取所需的可见列表变得容易。 要获取未见问题的列表,可以执行以下操作:
question_query = Questions.all().order(\'asked_date\')
questions = questions.fetch(50)

if not questions:
  # return ... nothing to do here

month = questions[0].asked_date.strftime(\'%Y%m\')
answered_list = QuestionsAnswered.get_by_key_name(month,parent=user)

question_keys = [question.key() for question in questions]
new_question_keys = set(question_keys) - set(answered_list.answered)
您可以将其扩展为检查所返回问题中最早的月份。如果没有返回足够多的问题,您也可以将其扩展为再次获取。     ,        正如Robert Kluin所建议的那样,您应该考虑向Question实体添加一个'responded \'属性。您仍然可以像这样实现相同的目标。但这是解决您问题的讨厌方法
questions=Question.all().ancestor(user)
result = []
for question in questions:
    responded = Response.all().ancestor(question).get()
    if responded is not None:
       result.append(responded)
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。