Django 1.3:升级后UserProfile的问题

时间:2011-07-11 14:31:49

标签: django django-1.3

升级到Django 1.3(从1.2.3开始)后,下一行会导致崩溃:

users = self.users.filter(userprofile__public_profile=True).order_by('first_name')

显示错误:

Caught FieldError while rendering: Cannot resolve keyword 'userprofile' into field. Choices are: _message_set, comment, commentabusereport, date_joined, dialog, dialogabusereport, email, first_name, forums, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, registrationprofile, user_permissions, userassociation, username, vote

与以前一样,UserProfile模型的指定如下:

AUTH_PROFILE_MODULE = 'emailuser.UserProfile'

有趣的是,一些显示为可用的字段(例如“dialogabusereport”和“userassociation”)反过来又是其他内部模型,具有与UserProfile相同的用户关系。

任何可能导致此问题的想法?为什么Django不再能在这种关系中看到我们的UserProfile模型?

2 个答案:

答案 0 :(得分:1)

如果您尝试从用户对象访问配置文件模型不是正确的表示法:

user.get_profile()

UserProfile模型应该是与用户模型的反向FK关系,因此不能作为属性使用。

如果您想查找first_name字段所订购的userprofile = True的所有UserProfile对象,那么它将是:

userprofiles = UserProfile.objects.filter(public_profile=True).order_by('user__first_name')

答案 1 :(得分:1)

事实证明,这是一个已知的Django错误,只在您的代码中导入UserAdmin时才会出现。

https://code.djangoproject.com/ticket/15771