2015-07-13 48 views
0

我已经延长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整数?

+0

回溯请求.. –

回答

2

首先,向用户查询request.user ID是毫无意义的。 request.user已经 a用户:u的值与您开始使用的值current_user完全相同。

其次,错误告诉你,这个特定的用户没有相关的Onboarding实例。您需要创建一个,可能在您创建用户时。

+0

谢谢,不是模型创建的Onboarding实例,因为我给它分配了一个默认值?当我在管理控制台中查看它时,它显示值= 1。 – alias51

+0

@danihp谢谢,但我不明白链接应该显示什么? – alias51

+0

Onboarding模型中的onboarding_status字段具有默认值,但您仍然必须为您的用户实际创建相关的Onboarding实例;不存在这样的默认设置。我真的怀疑,从AbstractUser继承并直接在该模型上添加'onboarding_status'字段的自定义用户模型在您的情况下更容易:请参阅您链接到的同一个文档页面。 –

0

您已分配onboarding_status = u.onboarding.onboarding_status,但您的context = {}为空。试试context={'onboarding_status': onboarding_status}。然后在模板文件中,即step_1.htmlstep_2.html,使用{{ onboarding_status }}来调用该变量。