Django 1.3: проблемы с UserProfile после обновления - PullRequest
4 голосов
/ 11 июля 2011

После обновления до 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 ]

1 голос
/ 19 сентября 2011

Как оказалось, это известная ошибка Django, возникающая только при импорте UserAdmin в ваш код.

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

1 голос
/ 18 сентября 2011

Если вы пытаетесь получить доступ к модели профиля из пользовательского объекта, это не правильная запись:

user.get_profile()

Модель UserProfile должна быть в обратном отношении FK по отношению к модели пользователя и поэтому недоступна.в качестве атрибута.

Если вы хотите найти все объекты UserProfile, где userprofile = True, упорядоченный по полю first_name, это будет:

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