这是我的views.py
if request.user.is_authenticated():
changepass = request.user.userprofile.objects.get(user=request.user)
if changepass.force_password_change == True:
changepass.force_password_change = False
changepass.save()
return HttpResponseRedirect('/login/register/')
elif changepass.force_password_change == False:
return HttpResponseRedirect('/main/')
根据Django,这一行changepass = request.user.userprofile.objects.get(user=request.user)
是问题所在。我正在尝试从UserProfile访问force_password_change
。
正如标题所示,我收到错误Manager isn't accessible via UserProfile instances
。
这是我的models.py供参考。
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
force_password_change = models.BooleanField(default=True)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
答案 0 :(得分:2)
完成request.user.userprofile
,
此时,您有一个UserProfile实例。你不能使用对象管理器(.objects
)。
你只需要
changepass = request.user.userprofile
获取 userprofile对象的另一种方法是执行
UserProfile.objects.get(user=request.user)
答案 1 :(得分:2)
您无法通过Model实例访问Manager。在您的情况下,request.user
是User
类的实例。
要访问管理员,您需要直接使用UserProfile
课程。
尽管如此,对于您要完成的任务,通过请求的用户对象来扩展数据库要容易得多:
changepass = request.user.userprofile
答案 2 :(得分:1)
尝试使用
order by date, rn