如何在视图中引用用户模型
How to reference User model in views
我已经按照文档扩展了 Django 用户模型:https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
models.py:
from django.db import models
from django.contrib.auth.models import User
class Onboarding(models.Model):
user = models.OneToOneField(User)
onboarding_status = models.SmallIntegerField(max_length=1, default=1)
views.py:
from django.shortcuts import render
from django.contrib.auth.models import User
from .models import Onboarding
def home(request):
current_user = request.user
u = User.objects.get(id=current_user.id)
onboarding_status = u.onboarding.onboarding_status
context = {
}
if onboarding_status == 1:
return render(request, "onboarding/step_1.html", context)
else:
return render(request, "onboarding/step_2.html", context)
但是,我得到一个错误 RelatedObjectDoesNotExist at /onboarding/
。 User has no onboarding.
如何从视图中准确引用与用户关联的 onboarding_status 整数?
首先,向用户查询 request.user
ID 毫无意义。 request.user
已经 一个用户:u
的值与您开始使用的 current_user
值完全相同。
其次,该错误告诉您此特定用户没有相关的入职实例。您需要创建一个,可能在创建用户时创建。
您已分配 onboarding_status = u.onboarding.onboarding_status
但您的 context = {}
为空。尝试 context={'onboarding_status': onboarding_status}
。然后在模板文件中,即step_1.html
或step_2.html
,使用{{ onboarding_status }}
调用变量。
我已经按照文档扩展了 Django 用户模型:https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
models.py:
from django.db import models
from django.contrib.auth.models import User
class Onboarding(models.Model):
user = models.OneToOneField(User)
onboarding_status = models.SmallIntegerField(max_length=1, default=1)
views.py:
from django.shortcuts import render
from django.contrib.auth.models import User
from .models import Onboarding
def home(request):
current_user = request.user
u = User.objects.get(id=current_user.id)
onboarding_status = u.onboarding.onboarding_status
context = {
}
if onboarding_status == 1:
return render(request, "onboarding/step_1.html", context)
else:
return render(request, "onboarding/step_2.html", context)
但是,我得到一个错误 RelatedObjectDoesNotExist at /onboarding/
。 User has no onboarding.
如何从视图中准确引用与用户关联的 onboarding_status 整数?
首先,向用户查询 request.user
ID 毫无意义。 request.user
已经 一个用户:u
的值与您开始使用的 current_user
值完全相同。
其次,该错误告诉您此特定用户没有相关的入职实例。您需要创建一个,可能在创建用户时创建。
您已分配 onboarding_status = u.onboarding.onboarding_status
但您的 context = {}
为空。尝试 context={'onboarding_status': onboarding_status}
。然后在模板文件中,即step_1.html
或step_2.html
,使用{{ onboarding_status }}
调用变量。