【问题标题】:Adding additional fields to a return from a query in ndb but not working将其他字段添加到 ndb 中的查询的返回但不起作用
【发布时间】:2014-02-12 04:55:20
【问题描述】:
courses, next_cursor, more_results = CourseTable.query()\
                                                    .order(CourseTable.name)\
                                                    .fetch_page(2, \
                                                        start_cursor=current_cursor,\
                                    projection=['name', 'abbrev_name'] 

list = format_list(courses) 
logging.info(list)

def format_list(coursequery):

    for x in coursequery:
        keyid = x.key.id()
        x.school_list = ICTable.school_nameabbrev_from_courseid(courseid=keyid)
        x.teacher_list = TCTable.teacherfilter_from_courseid(courseid=keyid)
        x.courseid = keyid
        full_list.append(x)
    return full_list

对于上述逻辑,我在 ndb google 数据存储中进行投影查询,然后使用从其他实体检索的额外字段格式化(即 format_list)返回的查询。然后,我将更新后的查询附加到额外的字段中,但是当我对列表进行 logging.info 显示时,我看不到添加的字段(即 school_list 和teacher_list——只有来自原始投影查询的字段——任何BODY有什么想法吗???非常感谢大家。

【问题讨论】:

  • 您缺少代码。 full_list的范围是什么

标签: google-app-engine python-2.7 app-engine-ndb


【解决方案1】:

我认为您应该首先将返回的对象转换为dict,然后添加其他字段。 你可以用它来转换成dict

https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_to_dict

【讨论】:

  • 好的好主意-会尝试-但是当我在渲染模板时从服务器发送信息时它确实有效,但是当我通过异步js调用获取信息时它不起作用-有什么理由它不能在异步 js 与直接从服务器中工作?没有意义?
【解决方案2】:

投影查询返回旨在为只读的实体。正如 omair 所说,一个简单的解决方法是将数据转换为字典。试试d = x._to_dict()

它实际上是在保存数据,但是投影上的 str 方法只打印投影的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多