如何在视图中引用用户模型

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.htmlstep_2.html,使用{{ onboarding_status }}调用变量。