2016-08-02 65 views
0

我得有三个布尔变量扩展的用户模型,说明什么类型的用户:Django的自定义用户登录,使用不同类型的用户

class MyUser(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    newField = models.CharField(max_length=30) 
    isTypeA = models.BooleanField(default=False) 
    isTypeB = models.BooleanField(default=False) 

我也写一个测试的基于类的观点,所谓类型检查

from django.shortcuts import render 
from django.contrib.auth.models import User 
from .models import MyUser 
from django.contrib.auth.decorators import user_passes_test 

def typeCheck(User): 
    return User.isTypeA 

@user_passes_view(typeCheck, login_url='/login') 
def typeAView(request): 
    ... 

当我尝试访问的观点,我得到一个错误说:“用户”对象有没有属性“ISA”。我如何正确访问扩展用户模型的字段?我也试过

return User.MyUser.isTypeA 

但只是返回一个错误说:“用户”对象有没有属性“MYUSER”

回答

1

typeCheck需要user并应return user.myuser.isTypeA

+0

是不是'user.my_user.isTypeA'? –

+0

@RégisB。不,那不是......!为什么混乱... –

+0

没错。这里澄清:https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.OneToOneField –

0

你被混淆的Python具有相同你想导入一个类的方法参数,你可以通过改变方法参数解决这个问题,以小写也遵循PEP8命名约定

def typeCheck(user): 
    return user.myuser.isTypeA 
相关问题