1

我们正在使用 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)

它与相关 SO question中的代码几乎相同;奇怪的是它适用于我的开发环境,但不适用于服务器。有任何想法吗?

4

1 回答 1

0

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

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

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

于 2013-12-19T16:19:30.800 回答