Django ForeignKey用户身份验证

时间:2016-02-03 09:11:10

标签: python django django-models django-authentication

我在django中有一个扩展的用户模型。

class userProfile(models.Model):
        user            = models.OneToOneField(User, related_name="profile")
        uniID           = models.CharField(max_length=6)

此外,我想在用户进入我的系统时使用以下日志进行记录:

class systemEntry(models.Model):
        user    = models.ForeignKey(userProfile)
        time    = models.DateTimeField(auto_now=True)

我在用户登录时使用django身份验证模型:

tempUser = auth.authenticate(username = myCredentials['username'], password = myCredentials['password'])
p = systemEntry(user = userProfile.objects.filter(user.get_profile().username=myCredentials['username']))
p.save()

给出错误:

  

关键字不能是表达式(views.py,第29行)

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

您必须使用.get并且内部查询不正确,而不是使用过滤器,您应该执行以下操作:

p = systemEntry(user = user.userprofile)
p.save()

如果您想要使用userProfile.objects.filter(user.get_profile().username=myCredentials['username']) 你应该知道它不能以这种方式完成,而应该这样做,

userProfile.objects.get(user__username=myCredentials['username'])
相关问题