2011-07-11 3 views
4

Après une mise à niveau vers Django 1.3 (de 1.2.3) la ligne suivante provoque un accident:Django 1.3: Problèmes avec UserProfile après la mise à niveau

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

L'erreur apparaît:

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 

Tout comme avant, le modèle UserProfile est spécifié comme ceci:

AUTH_PROFILE_MODULE = 'emailuser.UserProfile' 

chose drôle, certains des champs affichés comme macadamia (tels que « Dialo gabusereport "et" userassociation ") sont à leur tour d'autres modèles internes avec le même type de relation utilisateur que celui de UserProfile.

Des idées de quoi peut-on causer cela? Pourquoi Django ne peut plus voir notre modèle UserProfile dans cette relation?

+0

eu un problème similaire et je suis allée à Django 1.2.3 et mon projet fonctionne à nouveau. Je voudrais pouvoir vous aider avec la réponse - le moins que je puisse le faire votez votre question. – golliher

+0

Etes-vous par hasard en train d'importer UserAdmin à partir de django.contrib.auth.admin dans le fichier models.py de votre application? Peut-être provoqué par ce problème: https://code.djangoproject.com/ticket/15771 –

Répondre

1

Si vous essayez d'accéder au modèle de profil à partir d'un objet utilisateur n'est pas la notation correcte:

user.get_profile() 

Le modèle UserProfile devrait être une relation inverse FK au modèle de l'utilisateur et ainsi n'est pas disponible un attribut.

Si vous souhaitez trouver tous les objets UserProfile où userprofile = True commandé par le champ prenom ce serait:

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