我正在攻击Django,因为我是新手,创建一个用户可以登录并可以回答一些问题的网站。对于登录用户,我打算存储他们的用户名,问题ID和对问题的回复。然而,在尝试了几个小时后,我完全没有成功。下面我给出了Models.py
和Views.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
答案 0 :(得分:0)
q.user
是UserProfile
表的外键,因此您必须分配用户配置文件实例。
由于您可以使用request.user
访问用户,因此您可以使用一对一字段访问用户个人资料。
user_profile = request.user.userprofile
q.user = user_profile