【问题标题】:Odd behavior with inlined user profile in Django admin on Google App EngineGoogle App Engine 上 Django 管理员中内联用户配置文件的奇怪行为
【发布时间】:2013-07-03 18:54:48
【问题描述】:

我们正在使用 UserAdmin 的子类在 Google App Engine 1.8.1 上的 Django 1.4 应用程序中添加我们的用户配置文件。直到最近,这还不错,但是当从 App Engine(即 appspot.com)提供时,用户个人资料不会显示在我们应用的管理界面中。然而,奇怪的是,它仍然可以在我的开发机器上运行 SDK 并在 AppEngine Launcher 下运行。

其他人对此问题有任何经验并可能有解决方案吗?

这是我们正在使用的代码(在我们应用的 admin.py 中):

admin.site.unregister(User)


class UserProfileInline(admin.StackedInline):
    model = UserProfile


class UserModelAdmin(UserAdmin):
    inlines = [UserProfileInline, ]
    list_display = ('username', )
    search_fields = ['username']


admin.site.register(User, UserModelAdmin)

它与related SO question 中的代码几乎相同;奇怪的是它在我的开发环境中有效,但在服务器上无效。有什么想法吗?

【问题讨论】:

  • 你清除pyc文件并重启app server了吗?
  • 我没有;我会试一试,但我认为 appcfg 处理了所有这些?
  • 我同意。它应该 - 理想情况下
  • 原来问题是一个相关的(外键)模型,可以从大约。 102,000 条记录。在 App Engine 上,内联查询超时,在生成的 HTML 中只是留空。

标签: python django google-app-engine django-admin


【解决方案1】:

原来问题与一个 ForeignKey 字段 (school) 有关,该字段有大约 100,000 个选项可供选择。获取所有这些名称以构建下拉列表的查询在 App Engine 上超时。解决方案是将特定的相关字段设为只读:

class UserProfileInline(admin.StackedInline):
    model = UserProfile
    readonly_fields = ('school', 'file_data')

这并没有真正影响我们的应用。管理员故意受到限制,因为用户应该在大多数情况下使用前端的表单自己进行更改; school 字段使用 AJAX 调用来查询数据库以进行某种自动填充,并在用户在文本字段中键入时返回匹配项。

【讨论】:

    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多