在Django中保存用户特定数据

时间:2015-09-11 19:41:59

标签: python django

我正在攻击Django,因为我是新手,创建一个用户可以登录并可以回答一些问题的网站。对于登录用户,我打算存储他们的用户名,问题ID和对问题的回复。然而,在尝试了几个小时后,我完全没有成功。下面我给出了Models.pyViews.py

的摘要

Models.py - 我只复制创建用户配置文件和用户响应表所需的UserProfile类和Userresponse类

# Model class for creating user
class UserProfile(models.Model):
    user = models.OneToOneField(User)
    def __str__(self):
        return self.user.username

# Model class for getting user response
class UserResponse1(models.Model):
    user  = models.ForeignKey(UserProfile, default=0)
    questoinId = models.ForeignKey(Question)
    option = models.IntegerField(default=0)

```Views.py``

def response(request, question_id):
    q = UserResponse1()
    if request.user.is_authenticated():
        q.user = request.user.username
        q.questionId_id = question_id
        q.option +=request.POST['choice']
        q.save()

        # Redisplay the question voting form.
    return HttpResponseRedirect(reverse('polls:overallResults'))

但是,在上面运行时,我会收到以下错误 - Cannot assign "u'abc123'": "UserResponse1.user" must be a "UserProfile" instance.

abc123是用户的登录名。我无法弄清楚这个错误的原因。任何有关修复此错误的帮助,以便我可以将数据写入UserResponse1表,将非常有帮助。

我在Python 2.7上使用Django 1.8

1 个答案:

答案 0 :(得分:0)

q.userUserProfile表的外键,因此您必须分配用户配置文件实例。

由于您可以使用request.user访问用户,因此您可以使用一对一字段访问用户个人资料。

user_profile = request.user.userprofile
q.user = user_profile