2012-03-08 52 views
11

我有一个像下面的模型:(Django的)不能分配“U'' ”:‘StaffProfile.user’必须是一个‘用户’实例

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的用户模型

回答

15

您需要例如分配一个用户对象

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

staffprofile.user = user 
+0

男人非常感谢你:) – 2012-03-08 11:12:17

+2

我有一个类似的问题(但不是与auth_user实例)。我有一个ID(很长),但不能将其分配给该字段。那么,我将不得不前往数据库以获取选项,然后才能分配它?数据库上的外键有什么意义?它将检查并查看该ID是否有效。有没有解决这个问题的方法?我真的不得不为了获取这个ID而进行一次往返取阅,我已经拥有了? – 2012-05-16 15:58:22

4

user需要是User模型的实例,而不是一个Unicode对象(这是你逝去的话)。

相关问题