2012-03-08 3 views
11

Ho un modello come di seguito:(Django) Non è possibile assegnare "u'1' ": 'StaffProfile.user' deve essere un esempio 'Utente'

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

Quando provo ad inserire i dati con un codice come di seguito:

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() 

ottengo un errore come questo:

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

Cosa dovrei fare?

PS: sto usando il modello d'uso di Django

risposta

15

È necessario assegnare un oggetto User esempio

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

staffprofile.user = user 
+0

uomo grazie mille :) –

+2

Ho un problema simile (ma non con l'istanza auth_user). Ho un ID (un lungo), ma non posso assegnarlo al campo. Quindi, dovrò fare un viaggio di andata e ritorno nel database per avere un'opzione prima che possa assegnarla? Qual è il punto di una chiave esterna nel database? Controllerà e vedrà se l'ID è valido. C'è un lavoro in giro per questo? Devo davvero fare un viaggio di andata e ritorno per prendere l'opzione solo per ottenere l'id, che ho già? –

4

user deve essere un'istanza del modello User, non un oggetto Unicode (che è quello che sta passando esso).

Problemi correlati