我有一个如下模型:
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的用户模型
答案 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