(Django)无法分配“u'1”:“StaffProfile.user”必须是“用户”实例

时间:2012-03-08 10:59:33

标签: python django

我有一个如下模型:

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

当我尝试使用如下代码插入数据时:

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

我收到这样的错误:

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

我应该做什么?

PS:我正在使用Django的用户模型

3 个答案:

答案 0 :(得分:19)

您需要指定一个用户对象,例如

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

staffprofile.user = user

答案 1 :(得分:4)

user需要是User模型的实例,而不是unicode对象(这是您传递的对象)。

答案 2 :(得分:0)

是的,您必须在 staffprofile.user = user_id 用户 ID 位置传递 User 实例。

正如@david-s 在评论中指出的那样,如果您没有用户实例,则必须通过附加查询从数据库中获取。

相反你可以直接做的是 staffprofile.user_id = user_id 因为幕后的 Django 将 _id 附加到表中作为外键,所以 staffprofile.user 将结束 staffprofile.user_id