【问题标题】:Django ForeignKey user authenticationDjango ForeignKey 用户认证
【发布时间】:2016-02-03 09:11:10
【问题描述】:

我在 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 行)

我的错误在哪里?

【问题讨论】:

标签: python django django-models django-authentication


【解决方案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'])

【讨论】:

  • 无法将关键字“用户名”解析为字段。我无法从 userProfile 中读取用户名字段
  • 感谢您的帮助。另一个错误:强制转换为 Unicode:需要字符串或缓冲区,用户找到
  • 我再次为p = systemEntry(user = user.userprofile) 编辑了帖子。如果可能,请在哪里出现错误,在哪一行。你能发布堆栈跟踪吗
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多