2013-02-24 3 views
0

Je vois une erreur dans la création du profil utilisateur Django qui a été posée plusieurs fois, mais les solutions aux autres questions et le correctif Django docs recommended ne fonctionnent pas.La création du profil utilisateur Django se produit deux fois

J'ai un modèle UserProfile que je suis en train de créer lors de la création d'un nouvel objet utilisateur à partir des pages d'administration de Django. (Pardonnez-moi ici sur la syntaxe, il a été un moment que je débordement de pile)

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    organization = models.IntegerField(null=True) 
    phone = models.CharField(max_length=20, null=True, blank=True) 
    phone_ext = models.CharField(max_length=8, null=True, blank=True) 
    team_no = models.CharField(max_length=30, null=True, blank=True)  

post_save.connect(create_user_profile, sender=User, dispatch_uid="a.unique.string.that.does.not.help.me") 

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0]) 

J'ai ajouté le profil utilisateur à la classe UserAdmin et enregistré/inscrit les entrées du site d'administration.

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'profile' 



class UserAdmin(UserAdmin): 
    inlines = (UserProfileInline,) 
    actions = [set_organization] 
    exclude = ('is_staff',) 


try: 
    admin.site.unregister(User) 
    admin.site.unregister(RegistrationProfile) 
    admin.site.unregister(Group) 
## Re-register UserAdminadmin.site.unregister(User) 
finally: 
    admin.site.register(User, UserAdmin) 
    admin.site.register(RegistrationProfile, RegistrationAdmin) 
    admin.site.register(Group, GroupAdmin) 

Donc, chaque fois que j'essaie d'aller créer un nouvel utilisateur, je reçois toujours une erreur clé en double pour le champ user_profile_user_id. En regardant les journaux, deux instructions d'insertion sont exécutées sur l'enregistrement de l'utilisateur. Le premier manque toutes les données entrées dans les champs de profil utilisateur dans l'interface d'administration. La seconde a toutes les données mais échoue car il y avait déjà l'insertion initiale avec juste le user_id.

J'ai cherché le projet plusieurs fois en cherchant une importation en double de mon models.py pour la classe UserProfile et n'ai rien trouvé.

Quelqu'un a-t-il des idées ici?

Merci.

--update -

la version Django est 1.3

imports in the profile/models.py 
from django.contrib.auth.models import User 
from django.db.models.signals import post_save, pre_save 
import logging 

importations en provenance des admin.py par admin import django.contrib de django.contrib.auth.models importer Groupe de test.django.registration.models import RegistrationProfile à partir de test.django.registration.admin import RegistrationAdmin à partir de django.contrib.auth.admin import UserAdmin, GroupAdmin à partir de django.contrib.auth.model s importation utilisateur de test.django.extranet.profile.models importer UserProfile de test.django.common.models.ajrsonline.ajrsonline_users importer AjrsonlineUsers de AJRSOnlineLdapBackend import test.django.common.middleware.ajrs_ldap

+0

quelle version de Django et pourriez-vous poster vos importations? –

+0

juste au cas où: http://stackoverflow.com/questions/2345400/why-is-post-save-being-raised-twice-during-the-save-of-a-django-model –

+0

Glyn, merci pour le réponse, j'avais déjà vérifié la question 2345400 et la modification de l'entrée pour les applications installées n'a rien changé. – grantk

Répondre

0

Utiliser si déclaration afin que le premier sera restreint. Comme ceci par exemple:

if instance.field_name: 
    //save data here 

    //In here you can save the value that has complete data 
Questions connexes