2012-03-08 8 views
11

Mam modelu jak poniżej:(Django) Nie można przypisać „u'1' ”: «StaffProfile.user» musi być «użytkownik» Instancja

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

Kiedy próbuję wstawić dane z kodem jak poniżej:

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

pojawia się błąd jak poniżej:

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

Co mam zrobić?

PS: Używam Django model użytkownika

Odpowiedz

15

Musisz przypisać obiekt użytkownika np

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

staffprofile.user = user 
+0

człowiek dziękuję bardzo :) –

+2

Mam podobny problem (ale nie z instancją auth_user). Mam identyfikator (długi), ale nie mogę go przypisać do pola. Będę musiał odbyć wycieczkę do bazy danych, aby uzyskać opcję, zanim będę mógł ją przypisać? Jaki jest sens klucza obcego w bazie danych? Sprawdza, czy identyfikator jest prawidłowy. Czy jest do tego jakieś zadanie? Czy naprawdę muszę odbyć podróż w obie strony, aby pobrać opcję, aby uzyskać identyfikator, który już mam? –

4

user musi być instancją modelu User, a nie obiekt unicode (co jest to, czego przepuszczenie go).

Powiązane problemy