我有一个扩展用户模型,它有三个布尔变量,表明用户是什么类型:
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)
我也在为基于类的视图编写测试,名为typeCheck
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):
...
当我尝试访问该视图时,我收到一条错误消息:'User'对象没有属性'isA'。如何正确访问扩展用户模型的字段?我也试过
return User.MyUser.isTypeA
但这只会返回一个错误说:'用户'对象没有属性'MyUser'
答案 0 :(得分:1)
您的typeCheck
需要user
,return user.myuser.isTypeA
答案 1 :(得分:0)
您通过使用与您尝试导入的类相同的方法参数来混淆Python,您可以通过将方法参数更改为小写来解决此问题,该参数也遵循pep8命名约定< / p>
def typeCheck(user):
return user.myuser.isTypeA