2012-03-08 17 views
11

Tôi có một mô hình như dưới đây:(Django) Không thể gán "u'1' ": 'StaffProfile.user' phải là một 'tài' dụ

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

Khi tôi cố gắng để chèn dữ liệu với một mã số như dưới đây:

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

tôi nhận được một lỗi như thế này:

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

tôi phải làm gì đây?

PS: Tôi đang sử dụng Mô hình người dùng của Django

Trả lời

15

Bạn cần chỉ định Đối tượng người dùng, ví dụ:

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

staffprofile.user = user 
+0

người đàn ông cảm ơn bạn rất nhiều :) –

+2

Tôi có một vấn đề tương tự (nhưng, không phải với cá thể auth_user). Tôi có một id (một thời gian dài), nhưng không thể gán nó cho trường. Vì vậy, tôi sẽ phải thực hiện một chuyến đi vòng đến cơ sở dữ liệu để có được một tùy chọn trước khi tôi có thể gán nó? Điểm của khóa ngoại trong cơ sở dữ liệu là gì? Nó sẽ kiểm tra xem id có hợp lệ hay không. Có một cách giải quyết cho điều này? Tôi thực sự sẽ phải thực hiện một chuyến đi vòng để lấy các tùy chọn chỉ để có được id, mà tôi đã có? –

4

user cần phải được một thể hiện của mô hình User, không phải là một đối tượng unicode (đó là những gì bạn đang đi qua nó).

Các vấn đề liên quan