2011-03-29 15 views
5

Tengo un pequeño problema con el modelo del usuario, el modelo se parece a esto:Django 1.3 PerfilUsuario coincidencia de consultas no existe

#! -*- coding: utf-8 -*- 

from django.db import models 
from django.contrib.auth.models import User 

class UserProfile(models.Model): 
     url = models.URLField(max_length = 70, blank = True, verbose_name = 'WWW') 
     home_address = models.TextField(blank = True, verbose_name = 'Home Adress') 
     user = models.ForeignKey(User, blank = True, unique = True) 

     def __unicode__(self): 
      return '%s' %(self.user) 

Cuando abro un django-shell y la primera importación de un usuario:

u = User.objects.get(id = 1) 

y luego:

zm = UserProfile.objects.get(user = u) 

me aparece un error:

DoesNotExist: La consulta correspondiente de UserProfile no existe.

La idea es simple, primero se crea un usuario, funciona, entonces quiero añadir algunas informaciones para el usuario, dosn't trabajo:/

Respuesta

7

¿Seguro que existe PerfilUsuario objeto de ese usuario ? Django no lo crea automáticamente para ti.

Lo que probablemente quiere decir esto:

u = User.objects.get(id=1) 
zm, created = UserProfile.objects.get_or_create(user = u) 

Si está seguro de que existe el perfil (y que haya configurado correctamente AUTH_PROFILE_MODULE), el modelo de usuario ya tiene un método de ayuda para manejar esto:

u = User.objects.get(id=1) 
zm = u.get_profile() 
+0

Cierto, estoy buscando algunas horas de codificación, y he buscado muchos aspectos: p ... El correcto es siempre tan simple. Atentamente – nykon

3

As discussed in the documentation, Django no crea automáticamente objetos de perfil para usted. Esa es tu responsabilidad. Una forma común de hacerlo es adjuntar un controlador de señal de guardado posterior al modelo de Usuario y luego crear un perfil cada vez que se crea un nuevo usuario.

Cuestiones relacionadas