我已经使用OnetoOneField(User)为用户建立了一个模型。我还添加了另一个称为键的字段。
class AppUser(models.Model):
user = models.OneToOneField(User)
key = models.CharField(max_length= 32, default="")
def __str__(self):
return self.user.username
现在使用特定的用户名登录后,如何在views.py文件中访问该用户名的键属性?
答案 0 :(得分:0)
AppUser
对象将是您的User
对象的属性
user.appuser.key
答案 1 :(得分:-1)
默认情况下,每个OneToOneField
或ForeignKey
字段都将通过其相关名称(在本例中为User)访问。
您没有在AppUser模型中为用户字段定义任何related_name字段,因此请按以下方式访问它:
user.appuser_set.key
您已经注意到,它将是类名加_的小写字母。
或者您可以像这样手动添加它:
class AppUser(models.Model):
user = models.OneToOneField(User, related_name='app_user')
key = models.CharField(max_length= 32, default="")
def __str__(self):
return self.user.username
,然后在您的views.py代码或任何其他地方,通过user
来访问AppUser,如下所示:
user.app_user # This will get app_user connected to user instance
user.app_user.key # this will get proper key value for that appUser of User
更新:
还需要注意的是,在没有为每个用户创建AppUser实例之前,执行user.app_user
会引发错误。
在这种情况下,我通常会创建一个信号,该信号将在用户post_save
上触发。这意味着在创建用户后,将立即为该用户创建一个新的AppUser实例。