2012-03-08 14 views
11

tengo un modelo, como a continuación:(Django) no puede asignar "U'1' ": 'StaffProfile.user' debe ser una instancia de 'Usuario'

class StaffProfile(models.Model): 
    user = models.ForeignKey(User) 
    maas = models.FloatField() 
    maas_gunu = models.CharField(max_length=5) 

Cuando intento para insertar datos con un código como a continuación:

staffprofilesay = StaffProfile.objects.filter(user = user_id).count() 

    if staffprofilesay > 0: 
     staffprofile = StaffProfile.objects.get(user = user_id) 
    else:  
     staffprofile = StaffProfile() 

    staffprofile.user = user_id 
    staffprofile.maas = calisan_formu.cleaned_data["maas"] 
    staffprofile.maas_gunu = calisan_formu.cleaned_data["maas_gunu"] 
    staffprofile.save() 

me sale un error como este:

Cannot assign "u'1'": "StaffProfile.user" must be a "User" instance. 

¿Qué se supone que haga?

PS: Estoy utilizando el modelo de usuario de Django

Respuesta

15

Es necesario asignar un objeto de usuario, por ejemplo,

from django.contrib.auth.models import User 
user = User.objects.get(id=user_id) 

staffprofile.user = user 
+0

hombre muchas gracias :) –

+2

Tengo un problema similar (pero no con la instancia de auth_user). Tengo una identificación (larga), pero no puedo asignarla al campo. Entonces, ¿tendré que hacer un viaje redondo a la base de datos para obtener una opción antes de poder asignarla? ¿Cuál es el punto de una clave externa en la base de datos? Verificará si el ID es válido. ¿Hay una solución para esto? ¿Realmente voy a tener que hacer un viaje de ida y vuelta para buscar la opción solo para obtener la identificación, que ya tengo? –

4

user es necesario que haya una instancia del modelo User, no un objeto Unicode (que es lo que está pasando él).

Cuestiones relacionadas